X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/mfinanz.git/blobdiff_plain/6056e1d7ff9b26df2aa3a07ab0c615af1a9bbef4..ec52855f4ae863d612705fc55dcb8b2277bea3cc:/SL/Request.pm?ds=sidebyside diff --git a/SL/Request.pm b/SL/Request.pm index d339cb7be..0045b1928 100644 --- a/SL/Request.pm +++ b/SL/Request.pm @@ -153,8 +153,8 @@ sub _recode_recursively { # though. $to->{$key} = $iconv->convert("" . $from->{$key}); } else { - $to->{$key} = {} if 'HASH' eq ref $from->{$key}; - $to->{$key} = [] if 'ARRAY' eq ref $from->{$key}; + $to->{$key} ||= {} if 'HASH' eq ref $from->{$key}; + $to->{$key} ||= [] if 'ARRAY' eq ref $from->{$key}; _recode_recursively($iconv, $from->{$key}, $to->{$key}); } } @@ -167,8 +167,8 @@ sub _recode_recursively { # though. $from->[$idx] = $iconv->convert("" . $from->[$idx]); } else { - $to->[$idx] = {} if 'HASH' eq ref $from->[$idx]; - $to->[$idx] = [] if 'ARRAY' eq ref $from->[$idx]; + $to->[$idx] ||= {} if 'HASH' eq ref $from->[$idx]; + $to->[$idx] ||= [] if 'ARRAY' eq ref $from->[$idx]; _recode_recursively($iconv, $from->[$idx], $to->[$idx]); } } @@ -212,16 +212,16 @@ sub read_cgi_input { } } + my $encoding = delete $temp_target->{INPUT_ENCODING} || $db_charset; + + _recode_recursively(SL::Iconv->new($encoding, $db_charset), $temp_target => $target) if keys %$target; + if ($target->{RESTORE_FORM_FROM_SESSION_ID}) { my %temp_form; $::auth->restore_form_from_session(delete $target->{RESTORE_FORM_FROM_SESSION_ID}, form => \%temp_form); _store_value($target, $_, $temp_form{$_}) for keys %temp_form; } - my $encoding = delete $temp_target->{INPUT_ENCODING} || $db_charset; - - _recode_recursively(SL::Iconv->new($encoding, $db_charset), $temp_target => $target) if keys %$target; - map { $target->{$_} = $temp_target->{$_} } keys %{ $temp_target }; $::lxdebug->leave_sub;