* smallprint.cc (__small_vsprintf): Free allocated buffer rather than pointer

into the buffer.
This commit is contained in:
Christopher Faylor 2008-03-02 22:25:07 +00:00
parent da061b9cd2
commit 1264c4d4fa
2 changed files with 11 additions and 4 deletions

View File

@ -1,3 +1,8 @@
2008-03-02 Christopher Faylor <me+cygwin@cgf.cx>
* smallprint.cc (__small_vsprintf): Free allocated buffer rather than
pointer into the buffer.
2008-03-01 Christopher Faylor <me+cygwin@cgf.cx> 2008-03-01 Christopher Faylor <me+cygwin@cgf.cx>
* cygtls.h (_cygtls::handle_threadlist_exception): Eliminate. * cygtls.h (_cygtls::handle_threadlist_exception): Eliminate.

View File

@ -1,6 +1,7 @@
/* smallprint.cc: small print routines for WIN32 /* smallprint.cc: small print routines for WIN32
Copyright 1996, 1998, 2000, 2001, 2002, 2003, 2005, 2006, 2007 Red Hat, Inc. Copyright 1996, 1998, 2000, 2001, 2002, 2003, 2005, 2006, 2007, 2008
Red Hat, Inc.
This file is part of Cygwin. This file is part of Cygwin.
@ -195,17 +196,18 @@ __small_vsprintf (char *dst, const char *fmt, va_list ap)
us = va_arg (ap, PUNICODE_STRING); us = va_arg (ap, PUNICODE_STRING);
wfillin: wfillin:
{ {
char *tmp; char *tmpbuf;
if (!sys_wcstombs_alloc (&tmp, HEAP_NOTHEAP, us->Buffer, if (!sys_wcstombs_alloc (&tmpbuf, HEAP_NOTHEAP, us->Buffer,
us->Length / sizeof (WCHAR))) us->Length / sizeof (WCHAR)))
{ {
s = "invalid UNICODE_STRING"; s = "invalid UNICODE_STRING";
goto fillin; goto fillin;
} }
char *tmp = tmpbuf;
for (i = 0; *tmp && i < n; i++) for (i = 0; *tmp && i < n; i++)
*dst++ = *tmp++; *dst++ = *tmp++;
free (tmp); free (tmpbuf);
} }
break; break;
default: default: