# HG changeset patch # User Kenichi Handa # Date 1022067000 0 # Node ID b88195f698563d928ae6ef8fd589076960423e47 # Parent 74b74f59bc09b9db14d7f36f7bafc642f7a77ac6 (decode_coding_charset): Fix previous change. diff -r 74b74f59bc09 -r b88195f69856 src/coding.c --- a/src/coding.c Wed May 22 11:14:45 2002 +0000 +++ b/src/coding.c Wed May 22 11:30:00 2002 +0000 @@ -4336,8 +4336,8 @@ Lisp_Object val; struct charset *charset; int dim; - unsigned code; - int c1; + int len = 1; + unsigned code = c; val = AREF (valids, c); if (NILP (val)) @@ -4346,21 +4346,10 @@ { charset = CHARSET_FROM_ID (XFASTINT (val)); dim = CHARSET_DIMENSION (charset); - code = c; - if (dim > 1) + while (len++ < dim) { - ONE_MORE_BYTE (c1); - code = (code << 8) | c1; - if (dim > 2) - { - ONE_MORE_BYTE (c1); - code = (code << 8) | c1; - if (dim > 3) - { - ONE_MORE_BYTE (c1); - code = (c << 8) | c1; - } - } + ONE_MORE_BYTE (c); + code = (code << 8) | c; } CODING_DECODE_CHAR (coding, src, src_base, src_end, charset, code, c); @@ -4370,28 +4359,15 @@ /* VAL is a list of charset IDs. It is assured that the list is sorted by charset dimensions (smaller one comes first). */ - int b[4]; - int len = 1; - - b[0] = c; - /* VAL is a list of charset IDs. */ while (CONSP (val)) { charset = CHARSET_FROM_ID (XFASTINT (XCAR (val))); dim = CHARSET_DIMENSION (charset); - while (len < dim) + while (len++ < dim) { - ONE_MORE_BYTE (c1); - b[len++] = c1; + ONE_MORE_BYTE (c); + code = (code << 8) | c; } - if (dim == 1) - code = b[0]; - else if (dim == 2) - code = (b[0] << 8) | b[1]; - else if (dim == 3) - code = (b[0] << 16) | (b[1] << 8) | b[2]; - else - code = (b[0] << 24) | (b[1] << 16) | (b[2] << 8) | b[3]; CODING_DECODE_CHAR (coding, src, src_base, src_end, charset, code, c); if (c >= 0)