X-Git-Url: https://erislabs.net/gitweb/?a=blobdiff_plain;f=lib%2Fvasnprintf.c;h=9c701f1c6140872b58721dbc8f9cbcf4b62c0b90;hb=55da53d0db0c7a9fd82b2abc809560b3089df6a5;hp=29e601f0b506a7261a0b778acfe37cacb290c380;hpb=757bd39e4b07efaefaef3ef11027b7b7b40f5911;p=gnulib.git diff --git a/lib/vasnprintf.c b/lib/vasnprintf.c index 29e601f0b..9c701f1c6 100644 --- a/lib/vasnprintf.c +++ b/lib/vasnprintf.c @@ -47,6 +47,24 @@ # define freea(p) free (p) #endif +#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. */ +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 + char * vasnprintf (char *resultbuf, size_t *lengthp, const char *format, va_list args) { @@ -368,7 +386,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