[vlc-devel] [PATCH] Temporarily work around crashing on Windows due to %zu

David Flynn davidf+nntp at woaf.net
Mon Nov 17 17:59:21 CET 2008


On 2008-11-17, Rémi Denis-Courmont <rem at videolan.org> wrote:
> On Monday 17 November 2008 13:08:28 Pierre Ynard, you wrote:
>> The printf functions on Windows don't support the z length modifier,
>> which can shift field arguments, and causes an unconditional crash in
>> modules.c on start-up. For now, strip it on Windows and have vlc work
>> again, until a better solution is found and applied.
>
> In this particular case, storing an unsigned instead of a size_t would be 
> simpler. But my concern remain that this fix is pointless as it only 
> addresses the tip of the iceberg. We have quite a bunch of other %z and %j 
> throughout and not all of them can/should be turned into ints.

I had a quick grep for the %zu, and this was the only place where it
caused a severe issue (came before %s).

Just to write it up, there have been two suggestions sofar:

1) invent PRzu or whatever
   Some have complained that this causes gettext issues, however, there
   are no instances [that i could quickly find] that %zu is used with
   _N("...");

   So, is the gettext objection a non-issue? (see also PRId64)

2) accept the fact that windows sucks and modify the wrappers that call
   vsnprintf, to first fmt' = strdup(fmt), then scan fmt for offending
   formats and convert them to the correct one on win32 (then
   free(fmt')).

3) steal the *printf fro gnu libc

..david




More information about the vlc-devel mailing list