[Brett Cannon]
>> I created patch 1474907 with a fix for it.  Checks if %zd works for
>> size_t and if so sets PY_FORMAT_SIZE_T to "z", otherwise just doesn't
>> set the macro def.
>>
>> Assigned to Martin to make sure I didn't foul it up, but pretty much
>> anyone could probably double-check it.

[Martin v. Löwis]
> Unfortunately, SF stopped sending emails when you get assigned an issue,
> so I didn't receive any message when you created that patch.
>
> I now reviewed it, and think the test might not fail properly on systems
> where %zd isn't supported.

I agree with Martin's patch comments.  The C standards don't require
that printf fail if an unrecognized format gimmick is used (behavior
is explicitly "undefined" then).  For example,

"""
#include <stdio.h>
#include <stdlib.h>

int main()
{
    int i;
    i = printf("%zd\n", (size_t)0);
    printf("%d\n", i);
    return 0;
}
"""

prints "zd\n3\n" under all of MSVC 6.0, MSVC 7.1, and gcc (Cygwin) on
WinXP.  Using sprintf instead and checking the string produced seems
much more likely to work.

After the trunk freeze melts, I suggest just _trying_ stuff.  The
buildbot system covers a bunch of platforms now, and when trying to
out-hack ill-defined C stuff "try it and see" is easier than thinking
<0.5 wink>.
_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to