summaryrefslogtreecommitdiff
path: root/handy.h
diff options
context:
space:
mode:
authorKarl Williamson <khw@cpan.org>2014-01-29 03:04:24 +0100
committerKarl Williamson <public@khwilliamson.com>2014-01-28 22:09:39 -0700
commit4d7db1b9da573ce828cd700a0f88a8e5cf401038 (patch)
treee94d1c1f4b04c9f2b3008569b11c0ca61e993700 /handy.h
parentef463b6d87c1ce4e4946bdf785d47e481c1f33f2 (diff)
downloadperl-4d7db1b9da573ce828cd700a0f88a8e5cf401038.tar.gz
PATCH: [perl #121109] locales failing
This was due to a logic error in toFOLD_LC() introduced in 31f05a37c4e9c37a7263491f2fc0237d836e1a80. It affected only the code point at 0xB5 and shows up only in locales in which the character at that code point is an uppercase letter.
Diffstat (limited to 'handy.h')
-rw-r--r--handy.h10
1 files changed, 4 insertions, 6 deletions
diff --git a/handy.h b/handy.h
index c65170a31a..0a504bff00 100644
--- a/handy.h
+++ b/handy.h
@@ -1310,13 +1310,11 @@ EXTCONST U32 PL_charclass[];
* values "ss"); instead it asserts against that under DEBUGGING, and
* otherwise returns its input */
#define _generic_toFOLD_LC(c, function, cast) \
- (LIKELY((c) != MICRO_SIGN) \
- ? (__ASSERT_(! IN_UTF8_CTYPE_LOCALE \
- || (c) != LATIN_SMALL_LETTER_SHARP_S) \
- _generic_toLOWER_LC(c, function, cast)) \
- : (IN_UTF8_CTYPE_LOCALE) \
+ ((UNLIKELY((c) == MICRO_SIGN) && IN_UTF8_CTYPE_LOCALE) \
? GREEK_SMALL_LETTER_MU \
- : (c))
+ : (__ASSERT_(! IN_UTF8_CTYPE_LOCALE \
+ || (c) != LATIN_SMALL_LETTER_SHARP_S) \
+ _generic_toLOWER_LC(c, function, cast)))
/* Use the libc versions for these if available. */
#if defined(HAS_ISASCII) && ! defined(USE_NEXT_CTYPE)