Author: leo
Date: Wed Mar 22 07:02:40 2006
New Revision: 11981

Modified:
   trunk/src/io/io_utf8.c

Log:
strings - utf8 input filter

* improve reading parts slightly


Modified: trunk/src/io/io_utf8.c
==============================================================================
--- trunk/src/io/io_utf8.c      (original)
+++ trunk/src/io/io_utf8.c      Wed Mar 22 07:02:40 2006
@@ -64,8 +64,11 @@
                     iter.bytepos);
             UINTVAL c = *u8ptr;
             if (UTF8_IS_START(c)) {
+                UINTVAL len2 = UTF8SKIP(u8ptr);
+                if (iter.bytepos + len2 <= s->bufused)
+                    goto ok;
                 /* need len-1 more chars */
-                UINTVAL len2 = UTF8SKIP(u8ptr) - 1;
+                len2--;
                 s2 = NULL;
                 s2 = PIO_make_io_string(interpreter, &s2, len2);
                 s2->bufused = len2;
@@ -75,9 +78,10 @@
                 s->strlen = iter.charpos;
                 s = string_append(interpreter, s, s2, 0);
                 s->strlen = iter.charpos + 1;
-                return len + len2;
+                return len + len2 + 1;
             }
         }
+ok:
         iter.get_and_advance(interpreter, &iter);
     }
     s->strlen = iter.charpos;

Reply via email to