summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--newlib/ChangeLog5
-rw-r--r--newlib/libc/stdlib/mbtowc_r.c6
2 files changed, 9 insertions, 2 deletions
diff --git a/newlib/ChangeLog b/newlib/ChangeLog
index d83c52fdd..81b62e48a 100644
--- a/newlib/ChangeLog
+++ b/newlib/ChangeLog
@@ -1,3 +1,8 @@
+2001-06-08 Jonathan Larmour <jlarmour@redhat.com>
+
+ * libc/stdlib/mbtowc_r.c (_mbtowc_r): Avoid dereferencing
+ NULL pointer.
+
2001-05-28 Nick Clifton <nickc@cambridge.redhat.com>
* libc/stdio/vfprintf.c (_VFPRINTF_R): Handle printf ("%#.0o",0)
diff --git a/newlib/libc/stdlib/mbtowc_r.c b/newlib/libc/stdlib/mbtowc_r.c
index 7d718c8b0..4bf302359 100644
--- a/newlib/libc/stdlib/mbtowc_r.c
+++ b/newlib/libc/stdlib/mbtowc_r.c
@@ -68,9 +68,10 @@ _DEFUN (_mbtowc_r, (r, pwc, s, n, state),
{ /* fall-through */ }
else if (!strcmp (r->_current_locale, "C-SJIS"))
{
- int char1 = *t;
+ int char1;
if (s == NULL)
return 0; /* not state-dependent */
+ char1 = *t;
if (_issjis1 (char1))
{
int char2 = t[1];
@@ -87,9 +88,10 @@ _DEFUN (_mbtowc_r, (r, pwc, s, n, state),
}
else if (!strcmp (r->_current_locale, "C-EUCJP"))
{
- int char1 = *t;
+ int char1;
if (s == NULL)
return 0; /* not state-dependent */
+ char1 = *t;
if (_iseucjp (char1))
{
int char2 = t[1];