+2004-07-10 Bruno Haible <bruno@clisp.org>
+
+ * gettext.c (expand_escape): Don't go into an endless loop when the
+ first backslash is not followed by one of the expected characters.
+ * ngettext.c (expand_escape): Likewise.
+ Reported by Arkadiusz Miśkiewicz <arekm@pld-linux.org>.
+
2004-07-10 Bruno Haible <bruno@clisp.org>
* gettext.c (expand_escape): Support also \a and \v.
char *retval, *rp;
const char *cp = str;
- do
+ for (;;)
{
while (cp[0] != '\0' && cp[0] != '\\')
++cp;
+ if (cp[0] == '\0')
+ return str;
+ /* Found a backslash. */
+ if (cp[1] == '\0')
+ return str;
+ if (strchr ("abcfnrtv\\01234567", cp[1]) != NULL)
+ break;
+ ++cp;
}
- while (cp[0] != '\0' && cp[1] != '\0'
- && strchr ("abcfnrtv\\01234567", cp[1]) == NULL);
-
- if (cp[0] == '\0')
- return str;
retval = (char *) xmalloc (strlen (str));
do
{
+ /* Here cp[0] == '\\'. */
switch (*++cp)
{
case 'a': /* alert */
char *retval, *rp;
const char *cp = str;
- do
+ for (;;)
{
while (cp[0] != '\0' && cp[0] != '\\')
++cp;
+ if (cp[0] == '\0')
+ return str;
+ /* Found a backslash. */
+ if (cp[1] == '\0')
+ return str;
+ if (strchr ("abcfnrtv\\01234567", cp[1]) != NULL)
+ break;
+ ++cp;
}
- while (cp[0] != '\0' && cp[1] != '\0'
- && strchr ("abfnrtv\\01234567", cp[1]) == NULL);
-
- if (cp[0] == '\0')
- return str;
retval = (char *) xmalloc (strlen (str));
do
{
+ /* Here cp[0] == '\\'. */
switch (*++cp)
{
case 'a': /* alert */
+2004-07-10 Bruno Haible <bruno@clisp.org>
+
+ * tstgettext.c (expand_escape): Don't go into an endless loop when the
+ first backslash is not followed by one of the expected characters.
+ Reported by Arkadiusz Miśkiewicz <arekm@pld-linux.org>.
+
2004-07-10 Bruno Haible <bruno@clisp.org>
* tstgettext.c (expand_escape): Support also \a and \v.
char *retval, *rp;
const char *cp = str;
- do
+ for (;;)
{
while (cp[0] != '\0' && cp[0] != '\\')
++cp;
+ if (cp[0] == '\0')
+ return str;
+ /* Found a backslash. */
+ if (cp[1] == '\0')
+ return str;
+ if (strchr ("abcfnrtv\\01234567", cp[1]) != NULL)
+ break;
+ ++cp;
}
- while (cp[0] != '\0' && cp[1] != '\0'
- && strchr ("abcfnrtv\\01234567", cp[1]) == NULL);
-
- if (cp[0] == '\0')
- return str;
retval = (char *) xmalloc (strlen (str));
do
{
+ /* Here cp[0] == '\\'. */
switch (*++cp)
{
case 'a': /* alert */