Browse files

Fix crash when printing large 64-bit values on Win32 using the %I64x

2006-08-20  Tor Lillqvist  <tml@novell.com>

	* glib/gnulib/vasnprintf.c (vasnprintf): Fix crash when printing
	large 64-bit values on Win32 using the %I64x format. (#351034,
	Neil Piercy)
  • Loading branch information...
1 parent 1b60e27 commit 0d37c815d90cf9a41be95f7fa9a91773e9770ea6 Tor Lillqvist committed with Tor Lillqvist Aug 20, 2006
Showing with 22 additions and 0 deletions.
  1. +6 −0 ChangeLog
  2. +6 −0 ChangeLog.pre-2-12
  3. +10 −0 glib/gnulib/vasnprintf.c
View
6 ChangeLog
@@ -1,3 +1,9 @@
+2006-08-20 Tor Lillqvist <tml@novell.com>
+
+ * glib/gnulib/vasnprintf.c (vasnprintf): Fix crash when printing
+ large 64-bit values on Win32 using the %I64x format. (#351034,
+ Neil Piercy)
+
Wed Aug 16 13:59:07 2006 Tim Janik <timj@gtk.org>
* tests/gobject/Makefile.am:
View
6 ChangeLog.pre-2-12
@@ -1,3 +1,9 @@
+2006-08-20 Tor Lillqvist <tml@novell.com>
+
+ * glib/gnulib/vasnprintf.c (vasnprintf): Fix crash when printing
+ large 64-bit values on Win32 using the %I64x format. (#351034,
+ Neil Piercy)
+
Wed Aug 16 13:59:07 2006 Tim Janik <timj@gtk.org>
* tests/gobject/Makefile.am:
View
10 glib/gnulib/vasnprintf.c
@@ -480,6 +480,16 @@ vasnprintf (char *resultbuf, size_t *lengthp, const char *format, va_list args)
+ 2; /* account for leading sign or alternate form */
else
# endif
+# ifdef HAVE_INT64_AND_I64
+ if (type == TYPE_INT64 || type == TYPE_UINT64)
+ tmp_length =
+ (unsigned int) (sizeof (unsigned __int64) * CHAR_BIT
+ * 0.25 /* binary -> hexadecimal */
+ )
+ + 1 /* turn floor into ceil */
+ + 2; /* account for leading sign or alternate form */
+ else
+# endif
if (type == TYPE_LONGINT || type == TYPE_ULONGINT)
tmp_length =
(unsigned int) (sizeof (unsigned long) * CHAR_BIT

0 comments on commit 0d37c81

Please sign in to comment.