From fb5e0671dbbb19c819cdf4c4d6bfea5b5e389bf6 Mon Sep 17 00:00:00 2001 From: oy Date: Fri, 29 Oct 2010 23:08:23 +0200 Subject: fixed str_utf8_forward and str_utf8_encode --- src/base/system.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'src/base/system.c') diff --git a/src/base/system.c b/src/base/system.c index 812977c3..1e92b566 100644 --- a/src/base/system.c +++ b/src/base/system.c @@ -1368,14 +1368,14 @@ int str_utf8_forward(const char *str, int cursor) { if(!buf[1]) return cursor+1; if(!buf[2]) return cursor+2; - return cursor+2; + return cursor+3; } else if((*buf & 0xF8) == 0xF0) /* 11110xxx */ { if(!buf[1]) return cursor+1; if(!buf[2]) return cursor+2; if(!buf[3]) return cursor+3; - return cursor+3; + return cursor+4; } /* invalid */ @@ -1399,16 +1399,16 @@ int str_utf8_encode(char *ptr, int chr) else if(chr <= 0xFFFF) { ptr[0] = 0xE0|((chr>>12)&0x0F); - ptr[1] = 0xC0|((chr>>6)&0x3F); - ptr[2] = 0xC0|(chr&0x3F); + ptr[1] = 0x80|((chr>>6)&0x3F); + ptr[2] = 0x80|(chr&0x3F); return 3; } else if(chr <= 0x10FFFF) { ptr[0] = 0xF0|((chr>>18)&0x07); - ptr[1] = 0xC0|((chr>>12)&0x3F); - ptr[2] = 0xC0|((chr>>6)&0x3F); - ptr[3] = 0xC0|(chr&0x3F); + ptr[1] = 0x80|((chr>>12)&0x3F); + ptr[2] = 0x80|((chr>>6)&0x3F); + ptr[3] = 0x80|(chr&0x3F); return 4; } -- cgit 1.4.1