aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2007-10-12 15:54:54 +0000
committerUlrich Drepper <drepper@redhat.com>2007-10-12 15:54:54 +0000
commitd074d36dde3140ba9b09555760dcbd503405d0f3 (patch)
tree7f98e9e2193c8fb7ae05cd4417fa18748acbb8f5
parent26a51060b10e284231ff73197957cbff52970159 (diff)
downloadglibc-d074d36dde3140ba9b09555760dcbd503405d0f3.tar
glibc-d074d36dde3140ba9b09555760dcbd503405d0f3.tar.gz
glibc-d074d36dde3140ba9b09555760dcbd503405d0f3.tar.bz2
glibc-d074d36dde3140ba9b09555760dcbd503405d0f3.zip
* locale/programs/ld-collate.c (collate_read): Optimize a bit.
(skip_to): Fix problems with parameter of elifdef/elifndef.
-rw-r--r--ChangeLog5
-rw-r--r--locale/programs/ld-collate.c33
2 files changed, 21 insertions, 17 deletions
diff --git a/ChangeLog b/ChangeLog
index 7d43d5adb0..ea3bcab117 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2007-10-12 Ulrich Drepper <drepper@redhat.com>
+
+ * locale/programs/ld-collate.c (collate_read): Optimize a bit.
+ (skip_to): Fix problems with parameter of elifdef/elifndef.
+
2007-10-11 Ulrich Drepper <drepper@redhat.com>
* iconv/gconv_simple.c: Add some branch prediction.
diff --git a/locale/programs/ld-collate.c b/locale/programs/ld-collate.c
index 145a27f71a..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,15 +2712,18 @@ 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
+ while (1)
{
- now = lr_token (ldfile, charmap, result, NULL, verbose);
- nowtok = now->tok;
- }
- while (nowtok == tok_eol);
+ do
+ {
+ now = lr_token (ldfile, charmap, result, NULL, verbose);
+ nowtok = now->tok;
+ }
+ while (nowtok == tok_eol);
+
+ if (nowtok != tok_define)
+ break;
- while (nowtok == tok_define)
- {
if (ignore_content)
lr_ignore_rest (ldfile, 0);
else
@@ -2738,13 +2744,6 @@ collate_read (struct linereader *ldfile, struct localedef_t *result,
lr_ignore_rest (ldfile, 1);
}
}
-
- do
- {
- now = lr_token (ldfile, charmap, result, NULL, verbose);
- nowtok = now->tok;
- }
- while (nowtok == tok_eol);
}
if (nowtok == tok_copy)