[KoCo-CVS] [Commit] cjkcodecs/src _utf_8.c
Brought to you by:
perky
From: Hye-Shik C. <pe...@us...> - 2003-05-31 03:51:34
|
perky 03/05/30 20:41:14 Modified: src _utf_8.c Log: Detect utf-8 lengths > 3 correctly even on --with-unicode=ucs2 Revision Changes Path 1.2 +15 -8 cjkcodecs/src/_utf_8.c Index: _utf_8.c =================================================================== RCS file: /cvsroot/koco/cjkcodecs/src/_utf_8.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- _utf_8.c 29 May 2003 09:12:30 -0000 1.1 +++ _utf_8.c 31 May 2003 03:41:14 -0000 1.2 @@ -26,7 +26,7 @@ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * - * $Id: _utf_8.c,v 1.1 2003/05/29 09:12:30 perky Exp $ + * $Id: _utf_8.c,v 1.2 2003/05/31 03:41:14 perky Exp $ */ #include "codeccommon.h" @@ -98,7 +98,7 @@ if (c < 0x80) { (*outbuf)[0] = (unsigned char)c; NEXT(1, 1) - } else if (c < 0xc2 || c == 0xff) { + } else if (c < 0xc2) { return 1; } else if (c < 0xe0) { unsigned char c2; @@ -121,12 +121,10 @@ | ((Py_UNICODE)(c2 ^ 0x80) << 6) | (Py_UNICODE)(c3 ^ 0x80); NEXT(3, 1) - } + } else if (c < 0xf8) { #if Py_UNICODE_SIZE == 2 - else - return 3; + return 4; #else - } else if (c < 0xf8) { unsigned char c2, c3, c4; RESERVER_INBUF(4) @@ -141,7 +139,11 @@ | ((Py_UNICODE)(c3 ^ 0x80) << 6) | (Py_UNICODE)(c4 ^ 0x80); NEXT(4, 1) +#endif } else if (c < 0xfc) { +#if Py_UNICODE_SIZE == 2 + return 5; +#else unsigned char c2, c3, c4, c5; RESERVER_INBUF(5) @@ -157,7 +159,11 @@ | ((Py_UNICODE)(c4 ^ 0x80) << 6) | (Py_UNICODE)(c5 ^ 0x80); NEXT(5, 1) - } else { /* 0xff is excluded above */ +#endif + } else if (c < 0xff) { +#if Py_UNICODE_SIZE == 2 + return 6; +#else unsigned char c2, c3, c4, c5, c6; RESERVER_INBUF(6) @@ -176,8 +182,9 @@ | ((Py_UNICODE)(c5 ^ 0x80) << 6) | (Py_UNICODE)(c6 ^ 0x80); NEXT(6, 1) - } #endif + } else + return 1; } return 0; |