From mboxrd@z Thu Jan 1 00:00:00 1970 From: kanze@gabi-soft.de To: gcc-gnats@gcc.gnu.org Subject: libstdc++/4458: std::ctype::is doesn't call do_is as required by ISO 14882 Date: Wed, 03 Oct 2001 10:26:00 -0000 Message-id: <20011003171919.13389.qmail@sourceware.cygnus.com> X-SW-Source: 2001-10/msg00041.html List-Id: >Number: 4458 >Category: libstdc++ >Synopsis: std::ctype::is doesn't call do_is as required by ISO 14882 >Confidential: no >Severity: non-critical >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Wed Oct 03 10:26:00 PDT 2001 >Closed-Date: >Last-Modified: >Originator: James Kanze >Release: g++ 3.0 >Organization: >Environment: dxcs8h@~/tmp/gcc (164): uname -a SunOS dxcs8h 5.7 Generic_106541-12 sun4u sparc SUNW,Ultra-60 dxcs8h@~/tmp/gcc (165): /opt/global/pkg/gcc-3.0.0_threads/bin/g++ --version 3.0 dxcs8h@~/tmp/gcc (166): env | egrep LC_ LC_MESSAGES=C LC_TIME=en_US LC_NUMERIC=en_US LC_CTYPE=iso_8859_1 LC_MONETARY=en_US LC_COLLATE=en_US >Description: std::ctype::is doesn't call the virtual function do_is, as required by the standard. This means that the programmer cannot derive from std::ctype::is in order to create his own locales (or, since the existing implementation of the function doesn't work, to provide one that does). >How-To-Repeat: Compile, then look at the output under "Private CType". >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==