summaryrefslogtreecommitdiff
path: root/locale.c
diff options
context:
space:
mode:
authorNicholas Clark <nick@ccl4.org>2011-09-09 18:15:00 +0200
committerFlorian Ragwitz <rafl@debian.org>2011-09-09 18:15:00 +0200
commite0601d3cce2506893b3816f3ef18eaeff16f5062 (patch)
tree54c0e222e087c1f779246a238f24a1a0b9de89f9 /locale.c
parentad49ad39a1ce6ed6cd206df58acc6d2d81910459 (diff)
downloadperl-e0601d3cce2506893b3816f3ef18eaeff16f5062.tar.gz
When probing strxfrm, consider a consistent return value of 0 as sane
Diffstat (limited to 'locale.c')
-rw-r--r--locale.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/locale.c b/locale.c
index 5893212e86..81c09ab4ec 100644
--- a/locale.c
+++ b/locale.c
@@ -231,7 +231,7 @@ Perl_new_collate(pTHX_ const char *newcoll)
const Size_t fa = strxfrm(xbuf, "a", XFRMBUFSIZE);
const Size_t fb = strxfrm(xbuf, "ab", XFRMBUFSIZE);
const SSize_t mult = fb - fa;
- if (mult < 1)
+ if (mult < 1 && !(fa == 0 && fb == 0))
Perl_croak(aTHX_ "panic: strxfrm() gets absurd - a => %"UVuf", ab => %"UVuf,
(UV) fa, (UV) fb);
PL_collxfrm_base = (fa > (Size_t)mult) ? (fa - mult) : 0;