maint: update copyright
[gnulib.git] / lib / unistr / u16-mbsnlen.c
index 881958e..1a2fa06 100644 (file)
@@ -1,5 +1,5 @@
 /* Count characters in UTF-16 string.
-   Copyright (C) 2007 Free Software Foundation, Inc.
+   Copyright (C) 2007, 2009-2014 Free Software Foundation, Inc.
    Written by Bruno Haible <bruno@clisp.org>, 2007.
 
    This program is free software: you can redistribute it and/or modify it
@@ -28,12 +28,15 @@ u16_mbsnlen (const uint16_t *s, size_t n)
   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;
+        count = 1;
       s += count;
       n -= count;
-      characters++;
     }
   return characters;
 }