summaryrefslogtreecommitdiff
path: root/mbutil.c
diff options
context:
space:
mode:
authorChet Ramey <chet.ramey@case.edu>2011-11-23 19:11:27 -0500
committerChet Ramey <chet.ramey@case.edu>2011-11-23 19:11:27 -0500
commit753c336c548b9a1358058751c6288b6e31458d89 (patch)
tree271d7bcfa4c4d8d5e2a613109fd9623731846d98 /mbutil.c
parent1e4e5d08e95b810dc5bcec9a3b9b296a0c3afa85 (diff)
downloadreadline-753c336c548b9a1358058751c6288b6e31458d89.tar.gz
Readline-4.3.005 import
Diffstat (limited to 'mbutil.c')
-rw-r--r--mbutil.c20
1 files changed, 14 insertions, 6 deletions
diff --git a/mbutil.c b/mbutil.c
index 50302f0..8794d02 100644
--- a/mbutil.c
+++ b/mbutil.c
@@ -205,14 +205,16 @@ _rl_get_char_len (src, ps)
if (tmp == (size_t)(-2))
{
/* shorted to compose multibyte char */
- memset (ps, 0, sizeof(mbstate_t));
+ if (ps)
+ memset (ps, 0, sizeof(mbstate_t));
return -2;
}
else if (tmp == (size_t)(-1))
{
/* invalid to compose multibyte char */
/* initialize the conversion state */
- memset (ps, 0, sizeof(mbstate_t));
+ if (ps)
+ memset (ps, 0, sizeof(mbstate_t));
return -1;
}
else if (tmp == (size_t)0)
@@ -225,9 +227,12 @@ _rl_get_char_len (src, ps)
return 1. Otherwise return 0. */
int
_rl_compare_chars (buf1, pos1, ps1, buf2, pos2, ps2)
- char *buf1, *buf2;
- mbstate_t *ps1, *ps2;
- int pos1, pos2;
+ char *buf1;
+ int pos1;
+ mbstate_t *ps1;
+ char *buf2;
+ int pos2;
+ mbstate_t *ps2;
{
int i, w1, w2;
@@ -276,8 +281,11 @@ _rl_adjust_point(string, point, ps)
pos++;
/* clear the state of the byte sequence, because
in this case effect of mbstate is undefined */
- memset (ps, 0, sizeof (mbstate_t));
+ if (ps)
+ memset (ps, 0, sizeof (mbstate_t));
}
+ else if (tmp == 0)
+ pos++;
else
pos += tmp;
}