Mercurial > emacs
changeset 21063:44845df088bc
(strwidth): Make it work for invalid bytes sequence.
(Fstring_width): Give byte length of STR to strwidth.
author | Kenichi Handa <handa@m17n.org> |
---|---|
date | Wed, 04 Mar 1998 07:41:41 +0000 |
parents | 839b22ad1e42 |
children | 90bdbe2754c8 |
files | src/charset.c |
diffstat | 1 files changed, 6 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- a/src/charset.c Wed Mar 04 07:41:41 1998 +0000 +++ b/src/charset.c Wed Mar 04 07:41:41 1998 +0000 @@ -997,8 +997,8 @@ else { Lisp_Object disp; - int thiswidth; - int c = STRING_CHAR (str, endp - str); + int thislen; + int c = STRING_CHAR_AND_LENGTH (str, endp - str, thislen); /* Get the way the display table would display it. */ if (dp) @@ -1007,12 +1007,11 @@ disp = Qnil; if (VECTORP (disp)) - thiswidth = XVECTOR (disp)->size; + width += XVECTOR (disp)->size; else - thiswidth = ONE_BYTE_CHAR_WIDTH (*str); + width += ONE_BYTE_CHAR_WIDTH (*str); - width += thiswidth; - str += BYTES_BY_CHAR_HEAD (*str); + str += thislen; } } return width; @@ -1030,7 +1029,7 @@ Lisp_Object val; CHECK_STRING (str, 0); - XSETFASTINT (val, strwidth (XSTRING (str)->data, XSTRING (str)->size)); + XSETFASTINT (val, strwidth (XSTRING (str)->data, XSTRING (str)->size_byte)); return val; }