changeset 12621:50397cca5c76

unistr/u8-mbsnlen: Fix return value for incomplete character.
author Bruno Haible <bruno@clisp.org>
date Sun, 10 Jan 2010 16:29:23 +0100
parents c2fcdc831f5b
children 032e68fe3552
files ChangeLog lib/unistr/u16-mbsnlen.c lib/unistr/u8-mbsnlen.c modules/unistr/u16-mbsnlen modules/unistr/u8-mbsnlen
diffstat 5 files changed, 24 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,15 @@
+2010-01-10  Bruno Haible  <bruno@clisp.org>
+
+	unistr/u8-mbsnlen: Fix return value for incomplete character.
+	* lib/unistr/u8-mbsnlen.c (u8_mbsnlen): Use u8_mbtoucr instead of
+	u8_mblen.
+	* modules/unistr/u8-mbsnlen (Depends-on): Add unistr/u8-mbtoucr.
+	Remove unistr/u8-mblen.
+	* lib/unistr/u16-mbsnlen.c (u16_mbsnlen): Use u16_mbtoucr instead of
+	u16_mblen.
+	* modules/unistr/u16-mbsnlen (Depends-on): Add unistr/u16-mbtoucr.
+	Remove unistr/u16-mblen.
+
 2010-01-10  Bruno Haible  <bruno@clisp.org>
 
 	wchar: Fix compilation error when <wchar.h> is used from coreutils.
--- a/lib/unistr/u16-mbsnlen.c
+++ b/lib/unistr/u16-mbsnlen.c
@@ -28,12 +28,15 @@
   characters = 0;
   while (n > 0)
     {
-      int count = u16_mblen (s, n);
+      ucs4_t uc;
+      int count = u16_mbtoucr (&uc, s, n);
+      characters++;
+      if (count == -2)
+        break;
       if (count <= 0)
         count = 1;
       s += count;
       n -= count;
-      characters++;
     }
   return characters;
 }
--- a/lib/unistr/u8-mbsnlen.c
+++ b/lib/unistr/u8-mbsnlen.c
@@ -28,12 +28,15 @@
   characters = 0;
   while (n > 0)
     {
-      int count = u8_mblen (s, n);
+      ucs4_t uc;
+      int count = u8_mbtoucr (&uc, s, n);
+      characters++;
+      if (count == -2)
+        break;
       if (count <= 0)
         count = 1;
       s += count;
       n -= count;
-      characters++;
     }
   return characters;
 }
--- a/modules/unistr/u16-mbsnlen
+++ b/modules/unistr/u16-mbsnlen
@@ -6,7 +6,7 @@
 
 Depends-on:
 unistr/base
-unistr/u16-mblen
+unistr/u16-mbtoucr
 
 configure.ac:
 
--- a/modules/unistr/u8-mbsnlen
+++ b/modules/unistr/u8-mbsnlen
@@ -6,7 +6,7 @@
 
 Depends-on:
 unistr/base
-unistr/u8-mblen
+unistr/u8-mbtoucr
 
 configure.ac: