[ 
https://issues.apache.org/jira/browse/STDCXX-673?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12548544
 ] 

Martin Sebor commented on STDCXX-673:
-------------------------------------

Hmm, you're right. According to the config header for XLC++ on AIX, char is an 
unsigned type (see the script below -- I ran all the configurations to make 
sure the bug wasn't due to an optimization or some such quirk). 

I suspect I might have wanted to avoid printing "signed" for chars (when char 
is a signed type) to get the same result as the C99 implementation on the 
platform I was testing on for compatibility with it (i.e., to make sure int8_t 
was a typedef the same fundamental type whether it was defined by the C library 
on the OS or by stdcxx). Obviously, that won't work on platforms where the C 
library defines int8_t to be a typedef for signed char even if char is signed, 
but that's a separate issue.

In any case, I think the bug is in the condition on line 413. See if this patch 
works:

Index: etc/config/src/LIMITS.cpp
===================================================================
--- etc/config/src/LIMITS.cpp   (revision 601038)
+++ etc/config/src/LIMITS.cpp   (working copy)
@@ -410,7 +410,7 @@
             printf ("#define _RWSTD_INT%d_T %s          %s%s\n"         \
                     "#define _RWSTD_UINT%d_T %s         unsigned %s\n", \
                     width, width < 10 ? " " : "",                       \
-                    8 == width && '\xff' < 0 ? "signed " : "", type,    \
+                    8 == width && 0 < '\xff'? "signed " : "", type,    \
                     width, width < 10 ? " " : "", type);                \
     } while (0)

And here's the script (I think it's kinda nifty, btw.):

$ for n in 8 11 12 15; do \
    for s in a A d D s D; do \
        wget -O- -q 
http://people.apache.org/~sebor/stdcxx/results/aix-5.3-ppc-vacpp-9.0-$n$s-600031-cfg-h.gz.txt
 \
        | gunzip -c 2>/dev/null | grep _RWSTD_CHAR_MAX; \
    done; \
done
#define _RWSTD_CHAR_MAX    '\xff'
#define _RWSTD_CHAR_MAX    '\xff'
#define _RWSTD_CHAR_MAX    '\xff'
#define _RWSTD_CHAR_MAX    '\xff'
#define _RWSTD_CHAR_MAX    '\xff'
#define _RWSTD_CHAR_MAX    '\xff'
#define _RWSTD_CHAR_MAX    '\xff'
#define _RWSTD_CHAR_MAX    '\xff'
#define _RWSTD_CHAR_MAX    '\xff'
#define _RWSTD_CHAR_MAX    '\xff'
#define _RWSTD_CHAR_MAX    '\xff'
#define _RWSTD_CHAR_MAX    '\xff'
#define _RWSTD_CHAR_MAX    '\xff'
#define _RWSTD_CHAR_MAX    '\xff'
#define _RWSTD_CHAR_MAX    '\xff'
#define _RWSTD_CHAR_MAX    '\xff'
#define _RWSTD_CHAR_MAX    '\xff'
#define _RWSTD_CHAR_MAX    '\xff'
#define _RWSTD_CHAR_MAX    '\xff'
#define _RWSTD_CHAR_MAX    '\xff'



> [IBM XLC++ 9.0/AIX 5.3] 0.printf fails with assertions
> ------------------------------------------------------
>
>                 Key: STDCXX-673
>                 URL: https://issues.apache.org/jira/browse/STDCXX-673
>             Project: C++ Standard Library
>          Issue Type: Bug
>          Components: Test Driver
>    Affects Versions: 4.2.0
>            Reporter: Travis Vitek
>            Assignee: Travis Vitek
>            Priority: Minor
>             Fix For: 4.2.1
>
>
> extension: "%{N}" buffer size
> /amd/devco/vitek/stdcxx/trunk/tests/src/printf.cpp:1022: 
> rw_vasnprintf(ffffffffffff8d0, ffffffffffff8d8, "foo", va_list) error: errno 
> = 12: Not enough space
> /amd/devco/vitek/stdcxx/trunk/tests/src/printf.cpp:1022: 
> rw_vasnprintf(ffffffffffff8d0, ffffffffffff8d8, "foo", va_list) error: errno 
> = 12: Not enough space
> /amd/devco/vitek/stdcxx/trunk/tests/src/printf.cpp:1022: 
> rw_vasnprintf(ffffffffffff8d0, ffffffffffff8d8, "foo", va_list) error: errno 
> = 12: Not enough space
> /amd/devco/vitek/stdcxx/trunk/tests/src/printf.cpp:1022: 
> rw_vasnprintf(ffffffffffff8d0, ffffffffffff8d8, "foo", va_list) error: errno 
> = 12: Not enough space
> /amd/devco/vitek/stdcxx/trunk/tests/src/printf.cpp:1022: 
> rw_vasnprintf(ffffffffffff8d0, ffffffffffff8d8, "bar", va_list) error: errno 
> = 12: Not enough space
> /amd/devco/vitek/stdcxx/trunk/tests/src/printf.cpp:1022: 
> rw_vasnprintf(ffffffffffff8d0, ffffffffffff8d8, "bar", va_list) error: errno 
> = 12: Not enough space
> /amd/devco/vitek/stdcxx/trunk/tests/src/printf.cpp:1022: 
> rw_vasnprintf(ffffffffffff8d0, ffffffffffff8d8, "bar", va_list) error: errno 
> = 12: Not enough space
> /amd/devco/vitek/stdcxx/trunk/tests/src/printf.cpp:1022: 
> rw_vasnprintf(ffffffffffff8d0, ffffffffffff8d8, "bar", va_list) error: errno 
> = 12: Not enough space
> extension: "[EMAIL PROTECTED]" nested format directive
> malformed directives
> Failed 8 out of 1572 assertions.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to