mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-02-05 02:36:19 +01:00
gdatetime: Fix minor leaks from strup/strdown calls
These were accidentally introduced in commit 0b114b2687
.
Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
This commit is contained in:
parent
21c6ebf65b
commit
b1ae8fb85f
@ -2980,13 +2980,17 @@ g_date_time_format_locale (GDateTime *datetime,
|
|||||||
static inline gboolean
|
static inline gboolean
|
||||||
string_append (GString *string,
|
string_append (GString *string,
|
||||||
const gchar *s,
|
const gchar *s,
|
||||||
|
gboolean do_strup,
|
||||||
gboolean s_is_utf8)
|
gboolean s_is_utf8)
|
||||||
{
|
{
|
||||||
gchar *utf8;
|
gchar *utf8;
|
||||||
gsize utf8_len;
|
gsize utf8_len;
|
||||||
|
char *tmp = NULL;
|
||||||
|
|
||||||
if (s_is_utf8)
|
if (s_is_utf8)
|
||||||
{
|
{
|
||||||
|
if (do_strup)
|
||||||
|
s = tmp = g_utf8_strup (s, -1);
|
||||||
g_string_append (string, s);
|
g_string_append (string, s);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -2994,10 +2998,18 @@ string_append (GString *string,
|
|||||||
utf8 = _g_time_locale_to_utf8 (s, -1, NULL, &utf8_len, NULL);
|
utf8 = _g_time_locale_to_utf8 (s, -1, NULL, &utf8_len, NULL);
|
||||||
if (utf8 == NULL)
|
if (utf8 == NULL)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
if (do_strup)
|
||||||
|
{
|
||||||
|
tmp = g_utf8_strup (utf8, utf8_len);
|
||||||
|
g_free (utf8);
|
||||||
|
utf8 = g_steal_pointer (&tmp);
|
||||||
|
}
|
||||||
g_string_append_len (string, utf8, utf8_len);
|
g_string_append_len (string, utf8, utf8_len);
|
||||||
g_free (utf8);
|
g_free (utf8);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
g_free (tmp);
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3021,6 +3033,7 @@ g_date_time_format_utf8 (GDateTime *datetime,
|
|||||||
const gchar *mod = "";
|
const gchar *mod = "";
|
||||||
const gchar *name;
|
const gchar *name;
|
||||||
const gchar *tz;
|
const gchar *tz;
|
||||||
|
char *tmp = NULL;
|
||||||
|
|
||||||
while (*utf8_format)
|
while (*utf8_format)
|
||||||
{
|
{
|
||||||
@ -3048,26 +3061,24 @@ g_date_time_format_utf8 (GDateTime *datetime,
|
|||||||
switch (c)
|
switch (c)
|
||||||
{
|
{
|
||||||
case 'a':
|
case 'a':
|
||||||
name = mod_case ? g_utf8_strup (WEEKDAY_ABBR (datetime), -1)
|
name = WEEKDAY_ABBR (datetime);
|
||||||
: WEEKDAY_ABBR (datetime);
|
|
||||||
if (g_strcmp0 (name, "") == 0)
|
if (g_strcmp0 (name, "") == 0)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
name_is_utf8 = locale_is_utf8 || !WEEKDAY_ABBR_IS_LOCALE;
|
name_is_utf8 = locale_is_utf8 || !WEEKDAY_ABBR_IS_LOCALE;
|
||||||
|
|
||||||
if (!string_append (outstr, name, name_is_utf8))
|
if (!string_append (outstr, name, mod_case, name_is_utf8))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case 'A':
|
case 'A':
|
||||||
name = mod_case ? g_utf8_strup (WEEKDAY_FULL (datetime), -1)
|
name = WEEKDAY_FULL (datetime);
|
||||||
: WEEKDAY_FULL (datetime);
|
|
||||||
if (g_strcmp0 (name, "") == 0)
|
if (g_strcmp0 (name, "") == 0)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
name_is_utf8 = locale_is_utf8 || !WEEKDAY_FULL_IS_LOCALE;
|
name_is_utf8 = locale_is_utf8 || !WEEKDAY_FULL_IS_LOCALE;
|
||||||
|
|
||||||
if (!string_append (outstr, name, name_is_utf8))
|
if (!string_append (outstr, name, mod_case, name_is_utf8))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
break;
|
break;
|
||||||
@ -3076,14 +3087,12 @@ g_date_time_format_utf8 (GDateTime *datetime,
|
|||||||
: MONTH_ABBR_WITH_DAY (datetime);
|
: MONTH_ABBR_WITH_DAY (datetime);
|
||||||
if (g_strcmp0 (name, "") == 0)
|
if (g_strcmp0 (name, "") == 0)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
if (mod_case)
|
|
||||||
name = g_utf8_strup (name, -1);
|
|
||||||
|
|
||||||
name_is_utf8 = locale_is_utf8 ||
|
name_is_utf8 = locale_is_utf8 ||
|
||||||
((alt_digits && !MONTH_ABBR_STANDALONE_IS_LOCALE) ||
|
((alt_digits && !MONTH_ABBR_STANDALONE_IS_LOCALE) ||
|
||||||
(!alt_digits && !MONTH_ABBR_WITH_DAY_IS_LOCALE));
|
(!alt_digits && !MONTH_ABBR_WITH_DAY_IS_LOCALE));
|
||||||
|
|
||||||
if (!string_append (outstr, name, name_is_utf8))
|
if (!string_append (outstr, name, mod_case, name_is_utf8))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
break;
|
break;
|
||||||
@ -3092,14 +3101,12 @@ g_date_time_format_utf8 (GDateTime *datetime,
|
|||||||
: MONTH_FULL_WITH_DAY (datetime);
|
: MONTH_FULL_WITH_DAY (datetime);
|
||||||
if (g_strcmp0 (name, "") == 0)
|
if (g_strcmp0 (name, "") == 0)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
if (mod_case)
|
|
||||||
name = g_utf8_strup (name, -1);
|
|
||||||
|
|
||||||
name_is_utf8 = locale_is_utf8 ||
|
name_is_utf8 = locale_is_utf8 ||
|
||||||
((alt_digits && !MONTH_FULL_STANDALONE_IS_LOCALE) ||
|
((alt_digits && !MONTH_FULL_STANDALONE_IS_LOCALE) ||
|
||||||
(!alt_digits && !MONTH_FULL_WITH_DAY_IS_LOCALE));
|
(!alt_digits && !MONTH_FULL_WITH_DAY_IS_LOCALE));
|
||||||
|
|
||||||
if (!string_append (outstr, name, name_is_utf8))
|
if (!string_append (outstr, name, mod_case, name_is_utf8))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
break;
|
break;
|
||||||
@ -3147,14 +3154,12 @@ g_date_time_format_utf8 (GDateTime *datetime,
|
|||||||
: MONTH_ABBR_WITH_DAY (datetime);
|
: MONTH_ABBR_WITH_DAY (datetime);
|
||||||
if (g_strcmp0 (name, "") == 0)
|
if (g_strcmp0 (name, "") == 0)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
if (mod_case)
|
|
||||||
name = g_utf8_strup (name, -1);
|
|
||||||
|
|
||||||
name_is_utf8 = locale_is_utf8 ||
|
name_is_utf8 = locale_is_utf8 ||
|
||||||
((alt_digits && !MONTH_ABBR_STANDALONE_IS_LOCALE) ||
|
((alt_digits && !MONTH_ABBR_STANDALONE_IS_LOCALE) ||
|
||||||
(!alt_digits && !MONTH_ABBR_WITH_DAY_IS_LOCALE));
|
(!alt_digits && !MONTH_ABBR_WITH_DAY_IS_LOCALE));
|
||||||
|
|
||||||
if (!string_append (outstr, name, name_is_utf8))
|
if (!string_append (outstr, name, mod_case, name_is_utf8))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
break;
|
break;
|
||||||
@ -3281,9 +3286,11 @@ g_date_time_format_utf8 (GDateTime *datetime,
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 'Z':
|
case 'Z':
|
||||||
tz = mod_case && g_strcmp0 (mod, "#") == 0 ? g_utf8_strdown (g_date_time_get_timezone_abbreviation (datetime), -1)
|
tz = g_date_time_get_timezone_abbreviation (datetime);
|
||||||
: g_date_time_get_timezone_abbreviation (datetime);
|
if (mod_case && g_strcmp0 (mod, "#") == 0)
|
||||||
|
tz = tmp = g_utf8_strdown (tz, -1);
|
||||||
g_string_append (outstr, tz);
|
g_string_append (outstr, tz);
|
||||||
|
g_free (tmp);
|
||||||
break;
|
break;
|
||||||
case '%':
|
case '%':
|
||||||
g_string_append_c (outstr, '%');
|
g_string_append_c (outstr, '%');
|
||||||
|
Loading…
Reference in New Issue
Block a user