Bug 3745 - localedef: bug in some intervals when defining collations
Summary: localedef: bug in some intervals when defining collations
Status: RESOLVED FIXED
Alias: None
Product: glibc
Classification: Unclassified
Component: localedata (show other bugs)
Version: 2.4
: P2 normal
Target Milestone: ---
Assignee: GNU C Library Locale Maintainers
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2006-12-16 18:17 UTC by Pablo Saratxaga
Modified: 2014-07-17 14:55 UTC (History)
1 user (show)

See Also:
Host:
Target:
Build:
Last reconfirmed:
fweimer: security-


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Pablo Saratxaga 2006-12-16 18:17:10 UTC
I think I came across a bug in localedef.

I was testing adding some crude collating rules
for various scripts into the iso14651_t1 (so those
scripts could have a quite acceptable collating
in all locales, instead of being treated as
punctuation).

in the iso14651_t1 there is already:

<U4E00> <U4E00>;IGNORE;IGNORE;IGNORE   
.. ..;IGNORE;IGNORE;IGNORE   
<U9FA5> <U9FA5>;IGNORE;IGNORE;IGNORE   

so I put also to test:

# U0900-U097F: DEVANAGARI
<U0901> <U0901>;IGNORE;IGNORE;IGNORE
.. ..;IGNORE;IGNORE;IGNORE
<U0963> <U0963>;IGNORE;IGNORE;IGNORE
<U097B> <U097B>;IGNORE;IGNORE;IGNORE
.. ..;IGNORE;IGNORE;IGNORE
<U097F> <U097F>;IGNORE;IGNORE;IGNORE

And I had a big surprise, the first intervall
was completly ignored, only the explicit lines
(U0901 and U0963) were take in effect.
The second intervall was correctly taken into
account.

Testing a bit, I discovered that if I defined
in a line each from U0901 to U090F
then an intervall from U0910 to U0963 it worked.

Why cant U0901-U90F be in an intervall?

More strange, this one works just right:

<U0980> <U0980>;IGNORE;IGNORE;IGNORE
.. ..;IGNORE;IGNORE;IGNORE
<U09E5> <U09E5>;IGNORE;IGNORE;IGNORE

but this one has the 00-0F problem again:

<U0A01> <U0A01>;IGNORE;IGNORE;IGNORE
.. ..;IGNORE;IGNORE;IGNORE
<U0A65> <U0A65>;IGNORE;IGNORE;IGNORE
Comment 1 Ulrich Drepper 2007-02-17 16:53:50 UTC
Fix in the cvs trunk.