From 3d62fa8e69a84885df063bef66ca9e248194deb6 Mon Sep 17 00:00:00 2001 From: Graham Knop Date: Thu, 7 Aug 2008 22:55:30 +0000 Subject: [PATCH] don't initialize i18n in secureEval unless needed - avoid endless loop on language user profile field --- lib/WebGUI/Operation/Shared.pm | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/lib/WebGUI/Operation/Shared.pm b/lib/WebGUI/Operation/Shared.pm index de64c7d5c..804db1222 100644 --- a/lib/WebGUI/Operation/Shared.pm +++ b/lib/WebGUI/Operation/Shared.pm @@ -104,13 +104,19 @@ sub secureEval { my $code = shift; # Handle WebGUI function calls - my $i18n = WebGUI::International->new($session); + my $i18n; my %trusted = ( - 'WebGUI::International::get' => sub {$i18n->get(@_)}, - 'WebGUI::International::getLanguages' => sub { $i18n->getLanguages(@_) }, + 'WebGUI::International::get' => sub { + $i18n ||= WebGUI::International->new($session); + $i18n->get(@_); + }, + 'WebGUI::International::getLanguages' => sub { + $i18n ||= WebGUI::International->new($session); + $i18n->getLanguages(@_); + }, 'WebGUI::DateTime::epochToHuman' => sub { $session->datetime->epochToHuman(@_) }, '$session->datetime->epochToHuman' => sub { $session->datetime->epochToHuman(@_) }, - 'WebGUI::Icon::getToolbarOptions' => sub { $session->icon->getToolbarOptions() }, + 'WebGUI::Icon::getToolbarOptions' => sub { $session->icon->getToolbarOptions() }, ); foreach my $function (keys %trusted ) { while ($code =~ /($function\(([^)]*)\)\s*;*)/g) {