2004-11-29 Matthias Clasen <mclasen@redhat.com>
+ * glib/gmacros.h (G_GNUC_MALLOC): Define empty for gcc 2.95.
+
+ * glib/gmarkup.c (unescape_text_state_after_charref_hash):
+ Avoid a strndup() here, noticed by Morten Welinder.
+
+2004-11-29 Matthias Clasen <mclasen@redhat.com>
+
* glib/gmarkup.c: Remove leftover noinline attributes.
(is_name_start_char, is_name_char): Avoid possible reads
beyond the end of g_ascii_table.
2004-11-29 Matthias Clasen <mclasen@redhat.com>
+ * glib/gmacros.h (G_GNUC_MALLOC): Define empty for gcc 2.95.
+
+ * glib/gmarkup.c (unescape_text_state_after_charref_hash):
+ Avoid a strndup() here, noticed by Morten Welinder.
+
+2004-11-29 Matthias Clasen <mclasen@redhat.com>
+
* glib/gmarkup.c: Remove leftover noinline attributes.
(is_name_start_char, is_name_char): Avoid possible reads
beyond the end of g_ascii_table.
2004-11-29 Matthias Clasen <mclasen@redhat.com>
+ * glib/gmacros.h (G_GNUC_MALLOC): Define empty for gcc 2.95.
+
+ * glib/gmarkup.c (unescape_text_state_after_charref_hash):
+ Avoid a strndup() here, noticed by Morten Welinder.
+
+2004-11-29 Matthias Clasen <mclasen@redhat.com>
+
* glib/gmarkup.c: Remove leftover noinline attributes.
(is_name_start_char, is_name_char): Avoid possible reads
beyond the end of g_ascii_table.
2004-11-29 Matthias Clasen <mclasen@redhat.com>
+ * glib/gmacros.h (G_GNUC_MALLOC): Define empty for gcc 2.95.
+
+ * glib/gmarkup.c (unescape_text_state_after_charref_hash):
+ Avoid a strndup() here, noticed by Morten Welinder.
+
+2004-11-29 Matthias Clasen <mclasen@redhat.com>
+
* glib/gmarkup.c: Remove leftover noinline attributes.
(is_name_start_char, is_name_char): Avoid possible reads
beyond the end of g_ascii_table.
2004-11-29 Matthias Clasen <mclasen@redhat.com>
+ * glib/gmacros.h (G_GNUC_MALLOC): Define empty for gcc 2.95.
+
+ * glib/gmarkup.c (unescape_text_state_after_charref_hash):
+ Avoid a strndup() here, noticed by Morten Welinder.
+
+2004-11-29 Matthias Clasen <mclasen@redhat.com>
+
* glib/gmarkup.c: Remove leftover noinline attributes.
(is_name_start_char, is_name_char): Avoid possible reads
beyond the end of g_ascii_table.
#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)
#define G_GNUC_PURE \
__attribute__((__pure__))
+#define G_GNUC_MALLOC \
+ __attribute__((__malloc__))
#else
#define G_GNUC_PURE
+#define G_GNUC_MALLOC
#endif
#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ > 4)
__attribute__((__unused__))
#define G_GNUC_NO_INSTRUMENT \
__attribute__((__no_instrument_function__))
-#define G_GNUC_MALLOC \
- __attribute__((__malloc__))
#else /* !__GNUC__ */
#define G_GNUC_PRINTF( format_idx, arg_idx )
#define G_GNUC_SCANF( format_idx, arg_idx )
#define G_GNUC_CONST
#define G_GNUC_UNUSED
#define G_GNUC_NO_INSTRUMENT
-#define G_GNUC_MALLOC
#endif /* !__GNUC__ */
#if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1)
char_str (gunichar c,
gchar *buf)
{
- memset (buf, 0, 7);
+ memset (buf, 0, 8);
g_unichar_to_utf8 (c, buf);
return buf;
}
}
else
{
- gchar buf[7];
+ gchar buf[8];
set_unescape_error (ucontext->context, error,
p, ucontext->text_end,
break;
else if (!is_name_char (p))
{
- gchar ubuf[7];
+ gchar ubuf[8];
set_unescape_error (ucontext->context, error,
p, ucontext->text_end,
if (start != p)
{
- gchar *digit = g_strndup (start, p - start);
gulong l;
gchar *end = NULL;
- gchar *digit_end = digit + (p - start);
errno = 0;
if (is_hex)
- l = strtoul (digit, &end, 16);
+ l = strtoul (start, &end, 16);
else
- l = strtoul (digit, &end, 10);
+ l = strtoul (start, &end, 10);
- if (end != digit_end || errno != 0)
+ if (end != p || errno != 0)
{
set_unescape_error (ucontext->context, error,
start, ucontext->text_end,
G_MARKUP_ERROR_PARSE,
- _("Failed to parse '%s', which "
+ _("Failed to parse '%-.*s', which "
"should have been a digit "
"inside a character reference "
"(ê for example) - perhaps "
"the digit is too large"),
- digit);
+ p - start, start);
}
else
{
(l >= 0xE000 && l <= 0xFFFD) ||
(l >= 0x10000 && l <= 0x10FFFF))
{
- gchar buf[7];
+ gchar buf[8];
g_string_append (ucontext->str, char_str (l, buf));
}
else
set_unescape_error (ucontext->context, error,
start, ucontext->text_end,
G_MARKUP_ERROR_PARSE,
- _("Character reference '%s' does not encode a permitted character"),
- digit);
+ _("Character reference '%-.*s' does not "
+ "encode a permitted character"),
+ p - start, start);
}
}
- g_free (digit);
-
/* Move to next state */
p = g_utf8_next_char (p); /* past semicolon */
ucontext->state = USTATE_INSIDE_TEXT;
}
else
{
- gchar buf[7];
+ gchar buf[8];
+
set_error (context,
error,
G_MARKUP_ERROR_PARSE,
}
else
{
- gchar buf[7];
+ gchar buf[8];
+
set_error (context,
error,
G_MARKUP_ERROR_PARSE,
}
else
{
- gchar buf[7];
+ gchar buf[8];
+
set_error (context,
error,
G_MARKUP_ERROR_PARSE,
}
else
{
- gchar buf[7];
+ gchar buf[8];
+
set_error (context,
error,
G_MARKUP_ERROR_PARSE,
}
else
{
- gchar buf[7];
+ gchar buf[8];
+
set_error (context,
error,
G_MARKUP_ERROR_PARSE,
}
else
{
- gchar buf[7];
+ gchar buf[8];
+
set_error (context,
error,
G_MARKUP_ERROR_PARSE,
if (*context->iter != '>')
{
- gchar buf[7];
+ gchar buf[8];
+
set_error (context,
error,
G_MARKUP_ERROR_PARSE,