+2001-03-20 Havoc Pennington <hp@redhat.com>
+
+ * gutf8.c (g_utf8_strlen): rewrite, based on bug #52328 from
+ Anders
+
2001-03-19 Havoc Pennington <hp@redhat.com>
* gutf8.c (g_unichar_validate): added this function
+2001-03-20 Havoc Pennington <hp@redhat.com>
+
+ * gutf8.c (g_utf8_strlen): rewrite, based on bug #52328 from
+ Anders
+
2001-03-19 Havoc Pennington <hp@redhat.com>
* gutf8.c (g_unichar_validate): added this function
+2001-03-20 Havoc Pennington <hp@redhat.com>
+
+ * gutf8.c (g_utf8_strlen): rewrite, based on bug #52328 from
+ Anders
+
2001-03-19 Havoc Pennington <hp@redhat.com>
* gutf8.c (g_unichar_validate): added this function
+2001-03-20 Havoc Pennington <hp@redhat.com>
+
+ * gutf8.c (g_utf8_strlen): rewrite, based on bug #52328 from
+ Anders
+
2001-03-19 Havoc Pennington <hp@redhat.com>
* gutf8.c (g_unichar_validate): added this function
+2001-03-20 Havoc Pennington <hp@redhat.com>
+
+ * gutf8.c (g_utf8_strlen): rewrite, based on bug #52328 from
+ Anders
+
2001-03-19 Havoc Pennington <hp@redhat.com>
* gutf8.c (g_unichar_validate): added this function
+2001-03-20 Havoc Pennington <hp@redhat.com>
+
+ * gutf8.c (g_utf8_strlen): rewrite, based on bug #52328 from
+ Anders
+
2001-03-19 Havoc Pennington <hp@redhat.com>
* gutf8.c (g_unichar_validate): added this function
+2001-03-20 Havoc Pennington <hp@redhat.com>
+
+ * gutf8.c (g_utf8_strlen): rewrite, based on bug #52328 from
+ Anders
+
2001-03-19 Havoc Pennington <hp@redhat.com>
* gutf8.c (g_unichar_validate): added this function
+2001-03-20 Havoc Pennington <hp@redhat.com>
+
+ * gutf8.c (g_utf8_strlen): rewrite, based on bug #52328 from
+ Anders
+
2001-03-19 Havoc Pennington <hp@redhat.com>
* gutf8.c (g_unichar_validate): added this function
{
int len = 0;
const gchar *start = p;
- /* special case for the empty string */
- if (!*p)
- return 0;
- /* Note that the test here and the test in the loop differ subtly.
- In the loop we want to see if we've passed the maximum limit --
- for instance if the buffer ends mid-character. Here at the top
- of the loop we want to see if we've just reached the last byte. */
- while (max < 0 || p - start < max)
+
+ if (max < 0)
{
- p = g_utf8_next_char (p);
- ++len;
- if (! *p || (max > 0 && p - start > max))
- break;
+ while (*p)
+ {
+ p = g_utf8_next_char (p);
+ ++len;
+ }
+ }
+ else
+ {
+ if (max == 0 || !*p)
+ return 0;
+
+ p = g_utf8_next_char (p);
+
+ while (p - start < max && *p)
+ {
+ ++len;
+ p = g_utf8_next_char (p);
+ }
+
+ /* only do the last len increment if we got a complete
+ * char (don't count partial chars)
+ */
+ if (p - start == max)
+ ++len;
}
+
return len;
}
{
int len = 0;
const gchar *start = p;
- /* special case for the empty string */
- if (!*p)
- return 0;
- /* Note that the test here and the test in the loop differ subtly.
- In the loop we want to see if we've passed the maximum limit --
- for instance if the buffer ends mid-character. Here at the top
- of the loop we want to see if we've just reached the last byte. */
- while (max < 0 || p - start < max)
+
+ if (max < 0)
{
- p = g_utf8_next_char (p);
- ++len;
- if (! *p || (max > 0 && p - start > max))
- break;
+ while (*p)
+ {
+ p = g_utf8_next_char (p);
+ ++len;
+ }
+ }
+ else
+ {
+ if (max == 0 || !*p)
+ return 0;
+
+ p = g_utf8_next_char (p);
+
+ while (p - start < max && *p)
+ {
+ ++len;
+ p = g_utf8_next_char (p);
+ }
+
+ /* only do the last len increment if we got a complete
+ * char (don't count partial chars)
+ */
+ if (p - start == max)
+ ++len;
}
+
return len;
}