Bruce Evans <[EMAIL PROTECTED]> writes: > On Sat, 22 Sep 2007, [utf-8] Dag-Erling Smørgrav wrote: > > s/to remove the warning/to actually work/ > Please be precise :-). > s/to remove the warning ... on 64-bit platforms/to avoid undefined behaviour > on platforms where size_t is not u_int, and to avoid having to make a > delicate analysis to show that the behaviour is defined and correct on > all other platforms/. > > Delicate analysis: > - size_t is always an unsigned type, but the required type is int, so > size_t is never compatible with the required type. > - on platforms where size_t is smaller than int, the arg type is > nevertheless compatible with int, since warnx() is variadic and the > arg is one of the variadic args; the default promotions thus apply > and the arg is passed as an int whether or not you cast it explicitly > to int (but casting it to a type larger than int would break it). > FreeBSD doesn't support any platforms in this class. > - on platforms where size_t is u_int, the arg is passed as a u_int. > The analysis for this case is too delicate to give in full here.
you left out the case where size_t is larger than unsigned int, i.e. all 64-bit platforms. Even if the stack is aligned to the size of size_t, you will get interesting results on a big-endian system. DES -- Dag-Erling Smørgrav - [EMAIL PROTECTED] _______________________________________________ cvs-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/cvs-all To unsubscribe, send any mail to "[EMAIL PROTECTED]"