On 10/26/05, Mike McCormack mike@codeweavers.com wrote:
ChangeLog: Missing and zero precision specifiers are different. Fixes bug #3646.
dlls/msvcrt/wcs.c | 14 ++++++++------ 1 files changed, 8 insertions(+), 6 deletions(-)
That's fixed one of the precision bugs. The other one is when the precision is greater than approximately 40 bytes, we'll print past the end of the buffer?
/* deal with integers and floats using libc's printf */ else if( pf_is_valid_format( flags.Format ) ) { char fmt[20], number[40], *x = number;
if( flags.FieldLength >= sizeof number ) x = HeapAlloc( GetProcessHeap(), 0, flags.FieldLength+1 );
pf_rebuild_format_string( fmt, &flags );
if( pf_is_double_format( flags.Format ) ) sprintf( number, fmt, va_arg(valist, double) ); else sprintf( number, fmt, va_arg(valist, int) );