glib r7917 - in trunk: . glib/gnulib



Author: tml
Date: Fri Feb 27 07:46:32 2009
New Revision: 7917
URL: http://svn.gnome.org/viewvc/glib?rev=7917&view=rev

Log:
2009-02-27  Tor Lillqvist  <tml novell com>

	Bug 167569 - g_string_append_printf crashes on win32 when used
	with a NULL argument

	* glib/gnulib/vasnprintf.c (vasnprintf): Add workaround for buggy
	programs. Patch by Owen.



Modified:
   trunk/ChangeLog
   trunk/glib/gnulib/vasnprintf.c

Modified: trunk/glib/gnulib/vasnprintf.c
==============================================================================
--- trunk/glib/gnulib/vasnprintf.c	(original)
+++ trunk/glib/gnulib/vasnprintf.c	Fri Feb 27 07:46:32 2009
@@ -574,11 +574,15 @@
 # ifdef HAVE_WCHAR_T
 		      if (type == TYPE_WIDE_STRING)
 			tmp_length =
-			  local_wcslen (a.arg[dp->arg_index].a.a_wide_string)
+			  (a.arg[dp->arg_index].a.a_wide_string == NULL
+			  ? 6 /* wcslen(L"(null)") */
+			   : local_wcslen (a.arg[dp->arg_index].a.a_wide_string)) 
 			  * MB_CUR_MAX;
 		      else
 # endif
-			tmp_length = strlen (a.arg[dp->arg_index].a.a_string);
+			tmp_length = a.arg[dp->arg_index].a.a_string == NULL
+			  ? 6 /* strlen("(null)") */
+			  : strlen (a.arg[dp->arg_index].a.a_string);
 		      break;
 
 		    case 'p':
@@ -948,14 +952,18 @@
 #endif
 		      case TYPE_STRING:
 			{
-			  const char *arg = a.arg[dp->arg_index].a.a_string;
+			  const char *arg = a.arg[dp->arg_index].a.a_string == NULL
+			    ? "(null)"
+			    : a.arg[dp->arg_index].a.a_string;
 			  SNPRINTF_BUF (arg);
 			}
 			break;
 #ifdef HAVE_WCHAR_T
 		      case TYPE_WIDE_STRING:
 			{
-			  const wchar_t *arg = a.arg[dp->arg_index].a.a_wide_string;
+			  const wchar_t *arg = a.arg[dp->arg_index].a.a_wide_string == NULL
+			    ? L"(null)"
+			    : a.arg[dp->arg_index].a.a_wide_string;
 			  SNPRINTF_BUF (arg);
 			}
 			break;



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]