On 4/26/06, Tim Peters <[EMAIL PROTECTED]> wrote: > [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>. >
I uploaded a new version that uses sprintf() and then does strncmp() on the result to see if it matches what is expected. That should be explicit enough to make sure that only a properly supported z modifier results in a successful test. If anyone has a chance to check it again before the trunk unfreezes, that would be great. -Brett _______________________________________________ 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