projects
/
gnulib.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
tmpdir: Use a good default directory on native Windows.
[gnulib.git]
/
lib
/
mbrtowc.c
diff --git
a/lib/mbrtowc.c
b/lib/mbrtowc.c
index
25dac59
..
7a8e599
100644
(file)
--- a/
lib/mbrtowc.c
+++ b/
lib/mbrtowc.c
@@
-1,5
+1,5
@@
/* Convert multibyte character to wide character.
/* Convert multibyte character to wide character.
- Copyright (C) 1999-2002, 2005-201
0
Free Software Foundation, Inc.
+ Copyright (C) 1999-2002, 2005-201
1
Free Software Foundation, Inc.
Written by Bruno Haible <bruno@clisp.org>, 2008.
This program is free software: you can redistribute it and/or modify
Written by Bruno Haible <bruno@clisp.org>, 2008.
This program is free software: you can redistribute it and/or modify
@@
-40,9
+40,6
@@
mbrtowc (wchar_t *pwc, const char *s, size_t n, mbstate_t *ps)
{
char *pstate = (char *)ps;
{
char *pstate = (char *)ps;
- if (pstate == NULL)
- pstate = internal_state;
-
if (s == NULL)
{
pwc = NULL;
if (s == NULL)
{
pwc = NULL;
@@
-54,6
+51,10
@@
mbrtowc (wchar_t *pwc, const char *s, size_t n, mbstate_t *ps)
return (size_t)(-2);
/* Here n > 0. */
return (size_t)(-2);
/* Here n > 0. */
+
+ if (pstate == NULL)
+ pstate = internal_state;
+
{
size_t nstate = pstate[0];
char buf[4];
{
size_t nstate = pstate[0];
char buf[4];
@@
-321,7
+322,7
@@
mbrtowc (wchar_t *pwc, const char *s, size_t n, mbstate_t *ps)
size_t
rpl_mbrtowc (wchar_t *pwc, const char *s, size_t n, mbstate_t *ps)
{
size_t
rpl_mbrtowc (wchar_t *pwc, const char *s, size_t n, mbstate_t *ps)
{
-# if MBRTOWC_NULL_ARG_BUG || MBRTOWC_RETVAL_BUG
+# if MBRTOWC_NULL_ARG
2
_BUG || MBRTOWC_RETVAL_BUG
if (s == NULL)
{
pwc = NULL;
if (s == NULL)
{
pwc = NULL;
@@
-334,7
+335,7
@@
rpl_mbrtowc (wchar_t *pwc, const char *s, size_t n, mbstate_t *ps)
{
static mbstate_t internal_state;
{
static mbstate_t internal_state;
- /* Override mbrtowc's internal state. We can
not call mbsinit() on the
+ /* Override mbrtowc's internal state. We cannot call mbsinit() on the
hidden internal state, but we can call it on our variable. */
if (ps == NULL)
ps = &internal_state;
hidden internal state, but we can call it on our variable. */
if (ps == NULL)
ps = &internal_state;
@@
-379,7
+380,16
@@
rpl_mbrtowc (wchar_t *pwc, const char *s, size_t n, mbstate_t *ps)
return ret;
}
# else
return ret;
}
# else
- return mbrtowc (pwc, s, n, ps);
+ {
+# if MBRTOWC_NULL_ARG1_BUG
+ wchar_t dummy;
+
+ if (pwc == NULL)
+ pwc = &dummy;
+# endif
+
+ return mbrtowc (pwc, s, n, ps);
+ }
# endif
}
# endif
}