+2006-05-24 Bruno Haible <bruno@clisp.org>
+
+ * printf-args.c (printf_fetchargs): Turn NULL pointers for
+ TYPE_STRING and TYPE_WIDE_STRING into a non-NULL replacement.
+ Reported by Thorsten Maerz <torte@netztorte.de> via
+ Aaron Stone <aaron@serendipity.cx>.
+
2006-05-15 Ulrich Drepper <drepper@redhat.com>
* dcigettext.c (category_to_name): Adjust for _nl_category_names
/* Decomposed printf argument list.
- Copyright (C) 1999, 2002-2003, 2005 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2002-2003, 2005-2006 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU Library General Public License as published
#endif
case TYPE_STRING:
ap->a.a_string = va_arg (args, const char *);
+ /* A null pointer is an invalid argument for "%s", but in practice
+ it occurs quite frequently in printf statements that produce
+ debug output. Use a fallback in this case. */
+ if (ap->a.a_string == NULL)
+ ap->a.a_string = "(NULL)";
break;
#ifdef HAVE_WCHAR_T
case TYPE_WIDE_STRING:
ap->a.a_wide_string = va_arg (args, const wchar_t *);
+ /* A null pointer is an invalid argument for "%ls", but in practice
+ it occurs quite frequently in printf statements that produce
+ debug output. Use a fallback in this case. */
+ if (ap->a.a_wide_string == NULL)
+ {
+ static const wchar_t wide_null_string[] =
+ {
+ (wchar_t)'(',
+ (wchar_t)'N', (wchar_t)'U', (wchar_t)'L', (wchar_t)'L',
+ (wchar_t)')',
+ (wchar_t)0
+ };
+ ap->a.a_wide_string = wide_null_string;
+ }
break;
#endif
case TYPE_POINTER:
+2006-05-24 Bruno Haible <bruno@clisp.org>
+
+ * printf-args.c (printf_fetchargs): Turn NULL pointers for
+ TYPE_STRING and TYPE_WIDE_STRING into a non-NULL replacement.
+ Reported by Thorsten Maerz <torte@netztorte.de> via
+ Aaron Stone <aaron@serendipity.cx>.
+
2006-05-02 Charles Wilson <cygwin@cwilson.fastmail.fm>
* configure.ac (LTNOUNDEF): Set to -no-undefined also on mingw and
/* Decomposed printf argument list.
- Copyright (C) 1999, 2002-2003, 2005 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2002-2003, 2005-2006 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU Library General Public License as published
#endif
case TYPE_STRING:
ap->a.a_string = va_arg (args, const char *);
+ /* A null pointer is an invalid argument for "%s", but in practice
+ it occurs quite frequently in printf statements that produce
+ debug output. Use a fallback in this case. */
+ if (ap->a.a_string == NULL)
+ ap->a.a_string = "(NULL)";
break;
#ifdef HAVE_WCHAR_T
case TYPE_WIDE_STRING:
ap->a.a_wide_string = va_arg (args, const wchar_t *);
+ /* A null pointer is an invalid argument for "%ls", but in practice
+ it occurs quite frequently in printf statements that produce
+ debug output. Use a fallback in this case. */
+ if (ap->a.a_wide_string == NULL)
+ {
+ static const wchar_t wide_null_string[] =
+ {
+ (wchar_t)'(',
+ (wchar_t)'N', (wchar_t)'U', (wchar_t)'L', (wchar_t)'L',
+ (wchar_t)')',
+ (wchar_t)0
+ };
+ ap->a.a_wide_string = wide_null_string;
+ }
break;
#endif
case TYPE_POINTER: