+2005-11-27 Matthias Clasen <mclasen@redhat.com>
+
+ * glib/gunicollate.c (g_utf8_collate_key_for_filename):
+ Don't read beyond len. (#322520, Christian Persch)
+
Wed Nov 23 17:34:01 2005 Tim Janik <timj@imendio.com>
* glib/gdataset.c: access datalist flags via atomic pointer access
+2005-11-27 Matthias Clasen <mclasen@redhat.com>
+
+ * glib/gunicollate.c (g_utf8_collate_key_for_filename):
+ Don't read beyond len. (#322520, Christian Persch)
+
Wed Nov 23 17:34:01 2005 Tim Janik <timj@imendio.com>
* glib/gdataset.c: access datalist flags via atomic pointer access
+2005-11-27 Matthias Clasen <mclasen@redhat.com>
+
+ * glib/gunicollate.c (g_utf8_collate_key_for_filename):
+ Don't read beyond len. (#322520, Christian Persch)
+
Wed Nov 23 17:34:01 2005 Tim Janik <timj@imendio.com>
* glib/gdataset.c: access datalist flags via atomic pointer access
GString *append;
const gchar *p;
const gchar *prev;
+ const gchar *end;
gchar *collate_key;
gint digits;
gint leading_zeros;
result = g_string_sized_new (len * 2);
append = g_string_sized_new (0);
+ end = str + len;
+
/* No need to use utf8 functions, since we're only looking for ascii chars */
- for (prev = p = str; *p != '\0'; p++)
+ for (prev = p = str; p < end; p++)
{
switch (*p)
{
digits = 1;
}
- do
+ while (++p < end)
{
- p++;
-
if (*p == '0' && !digits)
++leading_zeros;
else if (g_ascii_isdigit(*p))
break;
}
}
- while (*p != '\0');
while (digits > 1)
{