libstdc++/4456: Regression error in <locale.h>

kanze@gabi-soft.de kanze@gabi-soft.de
Wed Oct 3 10:16:00 GMT 2001


>Number:         4456
>Category:       libstdc++
>Synopsis:       Regression error in <locale.h>
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Wed Oct 03 10:16:01 PDT 2001
>Closed-Date:
>Last-Modified:
>Originator:     James Kanze
>Release:        g++ 3.0
>Organization:
>Environment:
SunOS dxcs8h 5.7 Generic_106541-12 sun4u sparc SUNW,Ultra-60
LC_CTYPE=iso_8859_1
>Description:
Results of functions in <ctype.h> is incorrect except
in "C" locale.
>How-To-Repeat:
Set LC_CTYPE (or LC_ALL) to iso_8859_1
Compile program with -DOLD, both with 2.95.2 and
with 3.0.
Compare the output: 2.95.2 is correct, 2.0 apparently
always uses the locale "C".
>Fix:

>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/octet-stream; name="localeTest.cc"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="localeTest.cc"

CiNpZiAhIGRlZmluZWQoIE9MRCApCiNpbmNsdWRlIDxpb3N0cmVhbT4KI2luY2x1ZGUgPGlvbWFu
aXA+CiNpbmNsdWRlIDxsb2NhbGU+CiNlbHNlCiNpbmNsdWRlIDxpb3N0cmVhbS5oPgojaW5jbHVk
ZSA8aW9tYW5pcC5oPgojZW5kaWYKI2luY2x1ZGUgPGN0eXBlLmg+CiNpbmNsdWRlIDxsb2NhbGUu
aD4KCmNsYXNzIENsYXNzaWZpZXIKewpwdWJsaWM6CiAgICB2aXJ0dWFsICAgICAgICAgICAgIH5D
bGFzc2lmaWVyKCkge30KICAgIHZpcnR1YWwgYm9vbCAgICAgICAgaXNTcGFjZSggY2hhciBjaCAp
IGNvbnN0ID0gMCA7CiAgICB2aXJ0dWFsIGJvb2wgICAgICAgIGlzRGlnaXQoIGNoYXIgY2ggKSBj
b25zdCA9IDAgOwogICAgdmlydHVhbCBib29sICAgICAgICBpc0xvd2VyKCBjaGFyIGNoICkgY29u
c3QgPSAwIDsKICAgIHZpcnR1YWwgYm9vbCAgICAgICAgaXNVcHBlciggY2hhciBjaCApIGNvbnN0
ID0gMCA7CiAgICB2aXJ0dWFsIGJvb2wgICAgICAgIGlzUHVuY3QoIGNoYXIgY2ggKSBjb25zdCA9
IDAgOwp9IDsKCmNsYXNzIENsYXNzaWNDbGFzc2lmaWVyIDogcHVibGljIENsYXNzaWZpZXIKewog
ICAgdmlydHVhbCBib29sICAgICAgICBpc1NwYWNlKCBjaGFyIGNoICkgY29uc3QKICAgIHsKICAg
ICAgICByZXR1cm4gaXNzcGFjZSggc3RhdGljX2Nhc3Q8IHVuc2lnbmVkIGNoYXIgPiggY2ggKSAp
IDsKICAgIH0KICAgIHZpcnR1YWwgYm9vbCAgICAgICAgaXNEaWdpdCggY2hhciBjaCApIGNvbnN0
IAogICAgewogICAgICAgIHJldHVybiBpc2RpZ2l0KCBzdGF0aWNfY2FzdDwgdW5zaWduZWQgY2hh
ciA+KCBjaCApICkgOwogICAgfQogICAgdmlydHVhbCBib29sICAgICAgICBpc0xvd2VyKCBjaGFy
IGNoICkgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4gaXNsb3dlciggc3RhdGljX2Nhc3Q8IHVu
c2lnbmVkIGNoYXIgPiggY2ggKSApIDsKICAgIH0KICAgIHZpcnR1YWwgYm9vbCAgICAgICAgaXNV
cHBlciggY2hhciBjaCApIGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJuIGlzdXBwZXIoIHN0YXRp
Y19jYXN0PCB1bnNpZ25lZCBjaGFyID4oIGNoICkgKSA7CiAgICB9CiAgICB2aXJ0dWFsIGJvb2wg
ICAgICAgIGlzUHVuY3QoIGNoYXIgY2ggKSBjb25zdAogICAgewogICAgICAgIHJldHVybiBpc3B1
bmN0KCBzdGF0aWNfY2FzdDwgdW5zaWduZWQgY2hhciA+KCBjaCApICkgOwogICAgfQp9IDsKCiNp
ZiAhIGRlZmluZWQoT0xEKQpjbGFzcyBOZXdTdHlsZUNsYXNzaWZpZXIgOiBwdWJsaWMgQ2xhc3Np
Zmllcgp7CnB1YmxpYzoKICAgIGV4cGxpY2l0ICAgICAgICAgICAgTmV3U3R5bGVDbGFzc2lmaWVy
KCBzdGQ6OmxvY2FsZSBjb25zdCYgbCApCiAgICAgICAgOiAgIG1fY3R5cGUoIHN0ZDo6dXNlX2Zh
Y2V0PCBzdGQ6OmN0eXBlPCBjaGFyID4gPiggbCApICkKICAgIHsKICAgIH0KICAgIHZpcnR1YWwg
Ym9vbCAgICAgICAgaXNTcGFjZSggY2hhciBjaCApIGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJu
IG1fY3R5cGUuaXMoIHN0ZDo6Y3R5cGU8IGNoYXIgPjo6c3BhY2UgLCBjaCApIDsKICAgIH0KICAg
IHZpcnR1YWwgYm9vbCAgICAgICAgaXNEaWdpdCggY2hhciBjaCApIGNvbnN0CiAgICB7CiAgICAg
ICAgcmV0dXJuIG1fY3R5cGUuaXMoIHN0ZDo6Y3R5cGU8IGNoYXIgPjo6ZGlnaXQgLCBjaCApIDsK
ICAgIH0KICAgIHZpcnR1YWwgYm9vbCAgICAgICAgaXNMb3dlciggY2hhciBjaCApIGNvbnN0CiAg
ICB7CiAgICAgICAgcmV0dXJuIG1fY3R5cGUuaXMoIHN0ZDo6Y3R5cGU8IGNoYXIgPjo6bG93ZXIg
LCBjaCApIDsKICAgIH0KICAgIHZpcnR1YWwgYm9vbCAgICAgICAgaXNVcHBlciggY2hhciBjaCAp
IGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJuIG1fY3R5cGUuaXMoIHN0ZDo6Y3R5cGU8IGNoYXIg
Pjo6dXBwZXIgLCBjaCApIDsKICAgIH0KICAgIHZpcnR1YWwgYm9vbCAgICAgICAgaXNQdW5jdCgg
Y2hhciBjaCApIGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJuIG1fY3R5cGUuaXMoIHN0ZDo6Y3R5
cGU8IGNoYXIgPjo6cHVuY3QgLCBjaCApIDsKICAgIH0KcHJpdmF0ZToKICAgIHN0ZDo6Y3R5cGU8
IGNoYXIgPiBjb25zdCYKICAgICAgICAgICAgICAgICAgICAgICAgbV9jdHlwZSA7Cn0gOwoKY2xh
c3MgTXlPd25DVHlwZSA6IHB1YmxpYyBzdGQ6OmN0eXBlPCBjaGFyID4Kewpwcm90ZWN0ZWQ6CiAg
ICB2aXJ0dWFsIGJvb2wgICAgICAgIGRvX2lzKCBtYXNrIG0gLCBjaGFyIGNoICkgY29uc3QgOwpw
cml2YXRlOgogICAgYm9vbCAgICAgICAgICAgICAgICBpc1NwYWNlKCBjaGFyIGNoICkgY29uc3QK
ICAgIHsKICAgICAgICB1bnNpZ25lZCBjaGFyICAgICAgIHVjaCA9IGNoIDsKICAgICAgICByZXR1
cm4gKHVjaCA+PSAweDA5ICYmIHVjaCA8PSAweDBEKQogICAgICAgICAgICB8fCB1Y2ggPT0gMHgy
MCB8fCB1Y2ggPT0gMHhBMCA7CiAgICB9CgogICAgYm9vbCAgICAgICAgICAgICAgICBpc1ByaW50
KCBjaGFyIGNoICkgY29uc3QKICAgIHsKICAgICAgICB1bnNpZ25lZCBjaGFyICAgICAgIHVjaCA9
IGNoIDsKICAgICAgICByZXR1cm4gKHVjaCA+PSAweDA5ICYmIHVjaCA8PSAweDBEKQogICAgICAg
ICAgICB8fCAodWNoID49IDB4MjAgJiYgdWNoIDw9IDB4N0UpCiAgICAgICAgICAgIHx8ICh1Y2gg
Pj0gMHhBMCAmJiB1Y2ggPD0gMHhGRikgOwogICAgfQoKICAgIGJvb2wgICAgICAgICAgICAgICAg
aXNDbnRybCggY2hhciBjaCApIGNvbnN0CiAgICB7CiAgICAgICAgdW5zaWduZWQgY2hhciAgICAg
ICB1Y2ggPSBjaCA7CiAgICAgICAgcmV0dXJuICh1Y2ggPj0gMHgwMCAmJiB1Y2ggPD0gMHgxRikK
ICAgICAgICAgICAgfHwgdWNoID09IDB4N0YKICAgICAgICAgICAgfHwgKHVjaCA+PSAweDgwICYm
IHVjaCA8PSAweDlGKSA7CiAgICB9CgogICAgYm9vbCAgICAgICAgICAgICAgICBpc1VwcGVyKCBj
aGFyIGNoICkgY29uc3QKICAgIHsKICAgICAgICB1bnNpZ25lZCBjaGFyICAgICAgIHVjaCA9IGNo
IDsKICAgICAgICByZXR1cm4gKHVjaCA+PSAweDQxICYmIHVjaCA8PSAweDVhKQogICAgICAgICAg
ICB8fCAodWNoID49IDB4QzAgJiYgdWNoIDw9IDB4REYgJiYgdWNoICE9IDB4RDcpIDsKICAgIH0K
CiAgICBib29sICAgICAgICAgICAgICAgIGlzTG93ZXIoIGNoYXIgY2ggKSBjb25zdAogICAgewog
ICAgICAgIHVuc2lnbmVkIGNoYXIgICAgICAgdWNoID0gY2ggOwogICAgICAgIHJldHVybiAodWNo
ID49IDB4NjEgJiYgdWNoIDw9IDB4N2EpCiAgICAgICAgICAgIHx8ICh1Y2ggPj0gMHhFMCAmJiB1
Y2ggPD0gMHhGRiAmJiB1Y2ggIT0gMHhGNykgOwogICAgfQoKICAgIGJvb2wgICAgICAgICAgICAg
ICAgaXNBbHBoYSggY2hhciBjaCApIGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJuIGlzTG93ZXIo
IGNoICkgfHwgaXNVcHBlciggY2ggKSA7CiAgICB9CgogICAgYm9vbCAgICAgICAgICAgICAgICBp
c0RpZ2l0KCBjaGFyIGNoICkgY29uc3QKICAgIHsKICAgICAgICB1bnNpZ25lZCBjaGFyICAgICAg
IHVjaCA9IGNoIDsKICAgICAgICByZXR1cm4gdWNoID49IDB4MzAgJiYgdWNoIDw9IDB4MzkgOwog
ICAgfQoKICAgIGJvb2wgICAgICAgICAgICAgICAgaXNQdW5jdCggY2hhciBjaCApIGNvbnN0CiAg
ICB7CiAgICAgICAgdW5zaWduZWQgY2hhciAgICAgICB1Y2ggPSBjaCA7CiAgICAgICAgcmV0dXJu
ICh1Y2ggPj0gMHgyMSAmJiB1Y2ggPD0gMHgyRikKICAgICAgICAgICAgfHwgKHVjaCA+PSAweDNB
ICYmIHVjaCA8PSAweDNGKQogICAgICAgICAgICB8fCAodWNoID49IDB4NUIgJiYgdWNoIDw9IDB4
NUYpCiAgICAgICAgICAgIHx8ICh1Y2ggPj0gMHg3QiAmJiB1Y2ggPD0gMHg3RSkKICAgICAgICAg
ICAgfHwgKHVjaCA+PSAweEExICYmIHVjaCA8PSAweEJGKQogICAgICAgICAgICB8fCAodWNoID09
IDB4RDcgfHwgdWNoID09IDB4RjcpIDsKICAgIH0KCiAgICBib29sICAgICAgICAgICAgICAgIGlz
WERpZ2l0KCBjaGFyIGNoICkgY29uc3QKICAgIHsKICAgICAgICB1bnNpZ25lZCBjaGFyICAgICAg
IHVjaCA9IGNoIDsKICAgICAgICByZXR1cm4gaXNEaWdpdCggY2ggKQogICAgICAgICAgICB8fCAo
dWNoID49IDB4NTEgJiYgdWNoIDw9IDB4NTYpCiAgICAgICAgICAgIHx8ICh1Y2ggPj0gMHg3MSAm
JiB1Y2ggPD0gMHg3NikgOwogICAgfQp9ICAgICAgICAgICAgICAgICAgIGxvY2FsQ1R5cGUgOwoK
Ym9vbApNeU93bkNUeXBlOjpkb19pcyggbWFzayBtICwgY2hhciBjaCApIGNvbnN0CnsKICAgIGJv
b2wgICAgICAgICAgICAgICAgcmVzdWx0ID0gZmFsc2UgOwogICAgaWYgKCAobSAmIHNwYWNlKSAh
PSAwICkgewogICAgICAgIHJlc3VsdCB8PSBpc1NwYWNlKCBjaCApIDsKICAgIH0KICAgIGlmICgg
KG0gJiBwcmludCkgIT0gMCApIHsKICAgICAgICByZXN1bHQgfD0gaXNQcmludCggY2ggKSA7CiAg
ICB9CiAgICBpZiAoIChtICYgY250cmwpICE9IDAgKSB7CiAgICAgICAgcmVzdWx0IHw9IGlzQ250
cmwoIGNoICkgOwogICAgfQogICAgaWYgKCAobSAmIHVwcGVyKSAhPSAwICkgewogICAgICAgIHJl
c3VsdCB8PSBpc1VwcGVyKCBjaCApIDsKICAgIH0KICAgIGlmICggKG0gJiBsb3dlcikgIT0gMCAp
IHsKICAgICAgICByZXN1bHQgfD0gaXNMb3dlciggY2ggKSA7CiAgICB9CiAgICBpZiAoIChtICYg
YWxwaGEpICE9IDAgKSB7CiAgICAgICAgcmVzdWx0IHw9IGlzQWxwaGEoIGNoICkgOwogICAgfQog
ICAgaWYgKCAobSAmIGRpZ2l0KSAhPSAwICkgewogICAgICAgIHJlc3VsdCB8PSBpc0RpZ2l0KCBj
aCApIDsKICAgIH0KICAgIGlmICggKG0gJiBwdW5jdCkgIT0gMCApIHsKICAgICAgICByZXN1bHQg
fD0gaXNQdW5jdCggY2ggKSA7CiAgICB9CiAgICBpZiAoIChtICYgeGRpZ2l0KSAhPSAwICkgewog
ICAgICAgIHJlc3VsdCB8PSBpc1hEaWdpdCggY2ggKSA7CiAgICB9CiAgICByZXR1cm4gcmVzdWx0
IDsKfQoKI2VuZGlmCgp2b2lkCmR1bXBUYWJsZSggQ2xhc3NpZmllciBjb25zdCYgdGFibGUgKQp7
CiAgICBzdGQ6Om9zdHJlYW06OmZtdGZsYWdzCiAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdz
CiAgICAgICAgPSBzdGQ6OmNvdXQuc2V0Ziggc3RkOjppb3M6OmhleCAsIHN0ZDo6aW9zOjpiYXNl
ZmllbGQgKSA7CiAgICBjaGFyICAgICAgICAgICAgICAgIGZpbGwgPSBzdGQ6OmNvdXQuZmlsbCgg
JzAnICkgOwogICAgaW50ICAgICAgICAgICAgICAgICBpbkxpbmUgPSAwIDsKICAgIGZvciAoIGlu
dCBpID0gMCA7IGkgPCAweDEwMCA7ICsrIGkgKSB7CiAgICAgICAgaWYgKCBpbkxpbmUgPT0gMCAp
IHsKICAgICAgICAgICAgc3RkOjpjb3V0IDw8ICIgICAgIiA7CiAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgc3RkOjpjb3V0IDw8ICIgICIgOwogICAgICAgIH0KICAgICAgICBpZiAoIChpID49
IDB4MjAgJiYgaSA8IDB4N2YpIHx8IChpID49IDB4QTAgJiYgaSA8PSAweGZmKSApIHsKICAgICAg
ICAgICAgc3RkOjpjb3V0IDw8ICdcJycgPDwgc3RhdGljX2Nhc3Q8IGNoYXIgPiggaSApIDw8ICdc
JycgOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHN0ZDo6Y291dCA8PCAnICcgPDwgc3Rk
OjpzZXR3KCAyICkgPDwgaSA7CiAgICAgICAgfQogICAgICAgIGlmICggdGFibGUuaXNEaWdpdCgg
aSApICkgewogICAgICAgICAgICBzdGQ6OmNvdXQgPDwgIjogZGlnaXQiIDsKICAgICAgICB9IGVs
c2UgaWYgKCB0YWJsZS5pc0xvd2VyKCBpICkgKSB7CiAgICAgICAgICAgIHN0ZDo6Y291dCA8PCAi
OiBsb3dlciIgOwogICAgICAgIH0gZWxzZSBpZiAoIHRhYmxlLmlzVXBwZXIoIGkgKSApIHsKICAg
ICAgICAgICAgc3RkOjpjb3V0IDw8ICI6IHVwcGVyIiA7CiAgICAgICAgfSBlbHNlIGlmICggdGFi
bGUuaXNQdW5jdCggaSApICkgewogICAgICAgICAgICBzdGQ6OmNvdXQgPDwgIjogcHVuY3QiIDsK
ICAgICAgICB9IGVsc2UgaWYgKCB0YWJsZS5pc1NwYWNlKCBpICkgKSB7CiAgICAgICAgICAgIHN0
ZDo6Y291dCA8PCAiOiBzcGFjZSIgOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHN0ZDo6
Y291dCA8PCAiOiAgICAgICIgOwogICAgICAgIH0KICAgICAgICArKyBpbkxpbmUgOwogICAgICAg
IGlmICggaW5MaW5lID49IDQgKSB7CiAgICAgICAgICAgIHN0ZDo6Y291dCA8PCAnXG4nIDsKICAg
ICAgICAgICAgaW5MaW5lID0gMCA7CiAgICAgICAgfQogICAgfQogICAgc3RkOjpjb3V0LmZsYWdz
KCBmbGFncyApIDsKICAgIHN0ZDo6Y291dC5maWxsKCBmaWxsICkgOwp9CgppbnQKbWFpbigpCnsK
ICAgIHN0ZDo6Y291dCA8PCAiQ2xhc3NpY2FsIEMgc3R5bGUgY3R5cGU6XG4iIDsKICAgIGR1bXBU
YWJsZSggQ2xhc3NpY0NsYXNzaWZpZXIoKSApIDsKI2lmICEgZGVmaW5lZChPTEQpCiAgICBzdGQ6
OmNvdXQgPDwgIk5ldyBzdHlsZSwgZGVmYXVsdCBsb2NhbGU6XG4iIDsKICAgIGR1bXBUYWJsZSgg
TmV3U3R5bGVDbGFzc2lmaWVyKCBzdGQ6OmxvY2FsZSgpICkgKSA7CiAgICBzdGQ6OmNvdXQgPDwg
Ik5ldyBzdHlsZSwgXCJDXCIgbG9jYWxlOlxuIiA7CiAgICBkdW1wVGFibGUoIE5ld1N0eWxlQ2xh
c3NpZmllciggc3RkOjpsb2NhbGUoICJDIiApICkgKSA7CiAgICBzdGQ6OmNvdXQgPDwgIlByaXZh
dGUgQ1R5cGU6XG4iIDsKICAgIGR1bXBUYWJsZSggCiAgICAgICAgTmV3U3R5bGVDbGFzc2lmaWVy
KCBzdGQ6OmxvY2FsZSggc3RkOjpsb2NhbGUoKSAsICZsb2NhbENUeXBlICkgKSApIDsKI2VuZGlm
CiAgICBzZXRsb2NhbGUoIExDX0FMTCAsICIiICkgOwogICAgc3RkOjpjb3V0IDw8ICJcbkFmdGVy
IHNldHRpbmcgbG9jYWxlOlxuIiA7CiAgICBzdGQ6OmNvdXQgPDwgIkNsYXNzaWNhbCBDIHN0eWxl
IGN0eXBlOlxuIiA7CiAgICBkdW1wVGFibGUoIENsYXNzaWNDbGFzc2lmaWVyKCkgKSA7CiNpZiAh
IGRlZmluZWQoT0xEKQogICAgc3RkOjpjb3V0IDw8ICJOZXcgc3R5bGUsIGRlZmF1bHQgbG9jYWxl
OlxuIiA7CiAgICBkdW1wVGFibGUoIE5ld1N0eWxlQ2xhc3NpZmllciggc3RkOjpsb2NhbGUoKSAp
ICkgOwogICAgc3RkOjpjb3V0IDw8ICJOZXcgc3R5bGUsIFwiQ1wiIGxvY2FsZTpcbiIgOwogICAg
ZHVtcFRhYmxlKCBOZXdTdHlsZUNsYXNzaWZpZXIoIHN0ZDo6bG9jYWxlKCAiQyIgKSApICkgOwog
ICAgc3RkOjpjb3V0IDw8ICJQcml2YXRlIENUeXBlOlxuIiA7CiAgICBkdW1wVGFibGUoIAogICAg
ICAgIE5ld1N0eWxlQ2xhc3NpZmllciggc3RkOjpsb2NhbGUoIHN0ZDo6bG9jYWxlKCkgLCAmbG9j
YWxDVHlwZSApICkgKSA7CiNlbmRpZgogICAgcmV0dXJuIDAgOwp9Cg==



More information about the Gcc-bugs mailing list