Commit 558383d6 authored by Matthias Clasen's avatar Matthias Clasen Committed by Matthias Clasen

Fix bug 161288:

2006-12-18  Matthias Clasen  <mclasen@redhat.com>

        Fix bug 161288:

        * configure.in: Check for wcslen.

        * glib/gnulib/vasnprintf.c: Handle wcslen missing.
parent 52ef9438
2006-12-18 Matthias Clasen <mclasen@redhat.com>
Fix bug 161288:
* configure.in: Check for wcslen.
* glib/gnulib/vasnprintf.c: Handle wcslen missing.
2006-12-18 Matthias Clasen <mclasen@redhat.com>
* glib/gkeyfile.c: Accept '@' in locale names.
......
......@@ -917,7 +917,7 @@ gt_TYPE_WINT_T
AC_TYPE_SIZE_T
AC_CHECK_TYPES(ptrdiff_t)
jm_AC_TYPE_INTMAX_T
AC_CHECK_FUNCS(snprintf)
AC_CHECK_FUNCS([snprintf wcslen])
AC_FUNC_SNPRINTF_C99
# Check if bcopy can be used for overlapping copies, if memmove isn't found.
......
......@@ -41,6 +41,29 @@
#include <float.h> /* DBL_MAX_EXP, LDBL_MAX_EXP */
#include "printf-parse.h"
#ifdef HAVE_WCHAR_T
# ifdef HAVE_WCSLEN
# define local_wcslen wcslen
# else
/* Solaris 2.5.1 has wcslen() in a separate library libw.so. To avoid
a dependency towards this library, here is a local substitute.
Define this substitute only once, even if this file is included
twice in the same compilation unit. */
# ifndef local_wcslen_defined
# define local_wcslen_defined 1
static size_t
local_wcslen (const wchar_t *s)
{
const wchar_t *ptr;
for (ptr = s; *ptr != (wchar_t) 0; ptr++)
;
return ptr - s;
}
# endif
# endif
#endif
/* For those losing systems which don't have 'alloca' we have to add
some additional code emulating it. */
#ifdef HAVE_ALLOCA
......@@ -549,7 +572,7 @@ vasnprintf (char *resultbuf, size_t *lengthp, const char *format, va_list args)
# ifdef HAVE_WCHAR_T
if (type == TYPE_WIDE_STRING)
tmp_length =
wcslen (a.arg[dp->arg_index].a.a_wide_string)
local_wcslen (a.arg[dp->arg_index].a.a_wide_string)
* MB_CUR_MAX;
else
# endif
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment