Re: glib patches
- From: Owen Taylor <otaylor redhat com>
- To: gtk-devel-list gnome org
- Subject: Re: glib patches
- Date: 11 Jul 2001 11:29:11 -0400
Mark Murnane <Mark Murnane Sun COM> writes:
> /*
> * We use a two pass approach to keep memory management simple
> */
> - len = real_toupper (str, len, NULL, locale_type);
> - result = g_malloc (len + 1);
> - real_toupper (str, len, result, locale_type);
> + length = real_toupper (str, len, NULL, locale_type);
> + result = g_malloc (length + 1);
> + real_toupper (str, length, result, locale_type);
> result[len] = '\0';
As some consolation to me for screwing this up in the first place, all
four (!) patches received for this problem contained the same bug
above -- the second call to real_toupper() needs to still use the
original length not the new length. Aside from that, and variable
names, the patch I'm applying doesn't differ substantially.
Regards,
Owen
Index: ChangeLog
===================================================================
RCS file: /cvs/gnome/glib/ChangeLog,v
retrieving revision 1.750
diff -u -r1.750 ChangeLog
--- ChangeLog 2001/07/10 22:37:06 1.750
+++ ChangeLog 2001/07/11 15:25:17
@@ -1,3 +1,12 @@
+Wed Jul 11 11:13:50 2001 Owen Taylor <otaylor redhat com>
+
+ * glib/Makefile.am (libglib_1_3_la_SOURCES): Add gunicomp.h
+ (Reported by Sven Neumann).
+
+ * glib/guniprop.c (g_utf8_str/updown) glib/gunicollate.c
+ (g_utf8_collate_key): Fix shadowing problems reported by
+ many (D. Adler, S. Neumann, M. Murmane, L. Peter)
+
Fri Jul 6 00:02:41 2001 Tim Janik <timj gtk org>
* glib/gmessages.c (printf_string_upper_bound): fix negative exponent
Index: glib/Makefile.am
===================================================================
RCS file: /cvs/gnome/glib/glib/Makefile.am,v
retrieving revision 1.87
diff -u -r1.87 Makefile.am
--- glib/Makefile.am 2001/07/02 00:49:20 1.87
+++ glib/Makefile.am 2001/07/11 15:25:17
@@ -50,6 +50,7 @@
gunibreak.c \
gunichartables.h \
gunicollate.c \
+ gunicomp.h \
gunidecomp.h \
gunidecomp.c \
gutils.c
Index: glib/gunicollate.c
===================================================================
RCS file: /cvs/gnome/glib/glib/gunicollate.c,v
retrieving revision 1.2
diff -u -r1.2 gunicollate.c
--- glib/gunicollate.c 2001/07/07 02:42:47 1.2
+++ glib/gunicollate.c 2001/07/11 15:25:17
@@ -165,7 +165,7 @@
gssize len)
{
gchar *result;
- size_t len;
+ size_t xfrm_len;
#ifdef __STDC_ISO_10646__
@@ -176,16 +176,16 @@
setlocale (LC_COLLATE, "");
- len = wcsxfrm (NULL, (wchar_t *)str_norm, 0);
- result_wc = g_new (wchar_t, len + 1);
- wcsxfrm (result_wc, (wchar_t *)str_norm, len + 1);
+ xfrm_len = wcsxfrm (NULL, (wchar_t *)str_norm, 0);
+ result_wc = g_new (wchar_t, xfrm_len + 1);
+ wcsxfrm (result_wc, (wchar_t *)str_norm, xfrm_len + 1);
- for (i=0; i < len; i++)
+ for (i=0; i < xfrm_len; i++)
result_len += utf8_encode (NULL, result_wc[i]);
result = g_malloc (result_len + 1);
result_len = 0;
- for (i=0; i < len; i++)
+ for (i=0; i < xfrm_len; i++)
result_len += utf8_encode (result + result_len, result_wc[i]);
result[result_len] = '\0';
@@ -201,9 +201,9 @@
if (g_get_charset (&charset))
{
- len = strxfrm (NULL, str_norm, 0);
- result = g_malloc (len + 1);
- strxfrm (result, str_norm, len + 1);
+ xfrm_len = strxfrm (NULL, str_norm, 0);
+ result = g_malloc (xfrm_len + 1);
+ strxfrm (result, str_norm, xfrm_len + 1);
}
else
{
@@ -211,22 +211,21 @@
if (str_locale)
{
- len = strxfrm (NULL, str_locale, 0);
- result = g_malloc (len + 2);
+ xfrm_len = strxfrm (NULL, str_locale, 0);
+ result = g_malloc (xfrm_len + 2);
result[0] = 'A';
- strxfrm (result + 1, str_locale, len + 1);
+ strxfrm (result + 1, str_locale, xfrm_len + 1);
g_free (str_locale);
}
else
{
- len = strlen (str_norm);
- result = g_malloc (len + 2);
+ xfrm_len = strlen (str_norm);
+ result = g_malloc (xfrm_len + 2);
result[0] = 'B';
- memcpy (result + 1, str_norm, len);
- result[len+1] = '\0';
+ memcpy (result + 1, str_norm, xfrm_len);
+ result[xfrm_len+1] = '\0';
}
-
}
g_free (str_norm);
Index: glib/guniprop.c
===================================================================
RCS file: /cvs/gnome/glib/glib/guniprop.c,v
retrieving revision 1.9
diff -u -r1.9 guniprop.c
--- glib/guniprop.c 2001/07/07 02:42:47 1.9
+++ glib/guniprop.c 2001/07/11 15:25:17
@@ -711,7 +711,7 @@
g_utf8_strup (const gchar *str,
gssize len)
{
- gsize len;
+ gsize result_len;
LocaleType locale_type;
gchar *result;
@@ -722,10 +722,10 @@
/*
* We use a two pass approach to keep memory management simple
*/
- len = real_toupper (str, len, NULL, locale_type);
- result = g_malloc (len + 1);
+ result_len = real_toupper (str, len, NULL, locale_type);
+ result = g_malloc (result_len + 1);
real_toupper (str, len, result, locale_type);
- result[len] = '\0';
+ result[result_len] = '\0';
return result;
}
@@ -827,7 +827,7 @@
g_utf8_strdown (const gchar *str,
gssize len)
{
- gsize len;
+ gsize result_len;
LocaleType locale_type;
gchar *result;
@@ -838,10 +838,10 @@
/*
* We use a two pass approach to keep memory management simple
*/
- len = real_tolower (str, len, NULL, locale_type);
- result = g_malloc (len + 1);
+ result_len = real_tolower (str, len, NULL, locale_type);
+ result = g_malloc (result_len + 1);
real_tolower (str, len, result, locale_type);
- result[len] = '\0';
+ result[result_len] = '\0';
return result;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]