From: Simon McVittie Date: Fri, 12 Sep 2014 20:23:29 +0000 (+0100) Subject: Merge branch 'ready/anarcat/safe_unicode' X-Git-Tag: 3.20140916~52 X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/commitdiff_plain/ab876a99476429b3f2cda9898db9e4d0afe354a9?hp=a94dd618cc4f6c4897f499a6d19ed293859ef557 Merge branch 'ready/anarcat/safe_unicode' --- diff --git a/IkiWiki/CGI.pm b/IkiWiki/CGI.pm index c0d8f598b..cb83319e6 100644 --- a/IkiWiki/CGI.pm +++ b/IkiWiki/CGI.pm @@ -110,11 +110,23 @@ sub decode_cgi_utf8 ($) { } } +sub safe_decode_utf8 ($) { + my $octets = shift; + # call decode_utf8 on >= 5.20 only if it's not already decoded, + # otherwise it balks, on < 5.20, always call it + if ($] < 5.02 || !Encode::is_utf8($octets)) { + return decode_utf8($octets); + } + else { + return $octets; + } +} + sub decode_form_utf8 ($) { if ($] >= 5.01) { my $form = shift; foreach my $f ($form->field) { - my @value=map { decode_utf8($_) } $form->field($f); + my @value=map { safe_decode_utf8($_) } $form->field($f); $form->field(name => $f, value => \@value, force => 1,