call decode_utf8 inside eval
holger reported that decode_utf8 was crashing with perl 5.8.8. Earlier, I thought that passing 0 to the function avoided this with old perls, but that was apparently not enough, it still crashes. So, put it inside the eval, so we can at least recover from it crashing.
parent
7aad3b6047
commit
75f262f44d
|
@ -496,15 +496,19 @@ sub aggregate (@) { #{{{
|
||||||
# that contains invalid UTF-8 sequences. Convert
|
# that contains invalid UTF-8 sequences. Convert
|
||||||
# feed to ascii to try to work around.
|
# feed to ascii to try to work around.
|
||||||
$feed->{message}.=" ".sprintf(gettext("(invalid UTF-8 stripped from feed)"));
|
$feed->{message}.=" ".sprintf(gettext("(invalid UTF-8 stripped from feed)"));
|
||||||
|
$f=eval {
|
||||||
$content=Encode::decode_utf8($content, 0);
|
$content=Encode::decode_utf8($content, 0);
|
||||||
$f=eval{XML::Feed->parse(\$content)};
|
XML::Feed->parse(\$content)
|
||||||
|
};
|
||||||
}
|
}
|
||||||
if ($@) {
|
if ($@) {
|
||||||
# Another possibility is badly escaped entities.
|
# Another possibility is badly escaped entities.
|
||||||
$feed->{message}.=" ".sprintf(gettext("(feed entities escaped)"));
|
$feed->{message}.=" ".sprintf(gettext("(feed entities escaped)"));
|
||||||
$content=~s/\&(?!amp)(\w+);/&$1;/g;
|
$content=~s/\&(?!amp)(\w+);/&$1;/g;
|
||||||
|
$f=eval {
|
||||||
$content=Encode::decode_utf8($content, 0);
|
$content=Encode::decode_utf8($content, 0);
|
||||||
$f=eval{XML::Feed->parse(\$content)};
|
XML::Feed->parse(\$content)
|
||||||
|
};
|
||||||
}
|
}
|
||||||
if ($@) {
|
if ($@) {
|
||||||
$feed->{message}=gettext("feed crashed XML::Feed!")." ($@)";
|
$feed->{message}=gettext("feed crashed XML::Feed!")." ($@)";
|
||||||
|
|
Loading…
Reference in New Issue