summaryrefslogtreecommitdiff
path: root/locale
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2007-10-14 20:56:52 +0000
committerJakub Jelinek <jakub@redhat.com>2007-10-14 20:56:52 +0000
commita33c43a5aefbbb2d1e00432ba034d256af0008ae (patch)
tree80aa9060de68814fb13960b308a0faa95fb8ba94 /locale
parent4cee966cabbbd52c38260dff95f5ab43772ba5d9 (diff)
Updated to fedora-glibc-20071014T1847
Diffstat (limited to 'locale')
-rw-r--r--locale/programs/ld-collate.c62
-rw-r--r--locale/programs/repertoire.c3
2 files changed, 31 insertions, 34 deletions
diff --git a/locale/programs/ld-collate.c b/locale/programs/ld-collate.c
index 6d8f3fb2f0..bf22a2c47b 100644
--- a/locale/programs/ld-collate.c
+++ b/locale/programs/ld-collate.c
@@ -2662,13 +2662,16 @@ skip_to (struct linereader *ldfile, struct locale_collate_t *collate,
if (nowtok == tok_eof || nowtok == tok_end)
return nowtok;
}
- else if ((!to_endif && (nowtok == tok_else || nowtok == tok_elifdef
- || nowtok == tok_elifndef))
- || nowtok == tok_endif)
+ else if (nowtok == tok_endif || (!to_endif && nowtok == tok_else))
{
lr_ignore_rest (ldfile, 1);
return nowtok;
}
+ else if (!to_endif && (nowtok == tok_elifdef || nowtok == tok_elifndef))
+ {
+ /* Do not read the rest of the line. */
+ return nowtok;
+ }
else if (nowtok == tok_else)
{
lr_error (ldfile, _("%s: more then one 'else'"), "LC_COLLATE");
@@ -2709,43 +2712,38 @@ collate_read (struct linereader *ldfile, struct localedef_t *result,
/* The rest of the line containing `LC_COLLATE' must be free. */
lr_ignore_rest (ldfile, 1);
- do
- {
- now = lr_token (ldfile, charmap, result, NULL, verbose);
- nowtok = now->tok;
- }
- while (nowtok == tok_eol);
-
- while (nowtok == tok_define)
+ while (1)
{
- if (ignore_content)
+ do
{
- lr_ignore_rest (ldfile, 0);
- continue;
+ now = lr_token (ldfile, charmap, result, NULL, verbose);
+ nowtok = now->tok;
}
+ while (nowtok == tok_eol);
- arg = lr_token (ldfile, charmap, result, NULL, verbose);
- if (arg->tok != tok_ident)
- SYNTAX_ERROR (_("%s: syntax error"), "LC_COLLATE");
+ if (nowtok != tok_define)
+ break;
+
+ if (ignore_content)
+ lr_ignore_rest (ldfile, 0);
else
{
- /* Simply add the new symbol. */
- struct name_list *newsym = xmalloc (sizeof (*newsym)
- + arg->val.str.lenmb + 1);
- memcpy (newsym->str, arg->val.str.startmb, arg->val.str.lenmb);
- newsym->str[arg->val.str.lenmb] = '\0';
- newsym->next = defined;
- defined = newsym;
-
- lr_ignore_rest (ldfile, 1);
- }
+ arg = lr_token (ldfile, charmap, result, NULL, verbose);
+ if (arg->tok != tok_ident)
+ SYNTAX_ERROR (_("%s: syntax error"), "LC_COLLATE");
+ else
+ {
+ /* Simply add the new symbol. */
+ struct name_list *newsym = xmalloc (sizeof (*newsym)
+ + arg->val.str.lenmb + 1);
+ memcpy (newsym->str, arg->val.str.startmb, arg->val.str.lenmb);
+ newsym->str[arg->val.str.lenmb] = '\0';
+ newsym->next = defined;
+ defined = newsym;
- do
- {
- now = lr_token (ldfile, charmap, result, NULL, verbose);
- nowtok = now->tok;
+ lr_ignore_rest (ldfile, 1);
+ }
}
- while (nowtok == tok_eol);
}
if (nowtok == tok_copy)
diff --git a/locale/programs/repertoire.c b/locale/programs/repertoire.c
index cc83374c9f..366580e80f 100644
--- a/locale/programs/repertoire.c
+++ b/locale/programs/repertoire.c
@@ -113,8 +113,7 @@ repertoire_read (const char *filename)
filename);
repfile = lr_open (buf, repertoiremap_hash);
- if (repfile == NULL)
- free (buf);
+ free (buf);
}
}