aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2001-08-03 05:33:30 +0000
committerUlrich Drepper <drepper@redhat.com>2001-08-03 05:33:30 +0000
commit755b39d29bec64927aff82e1598bdfb72a017515 (patch)
treec9e341fbc84e01470176ae337b8cc63d3e8cda37
parent518bd01a3d353c67e9db880c8faa70cf15855eda (diff)
downloadglibc-755b39d29bec64927aff82e1598bdfb72a017515.zip
glibc-755b39d29bec64927aff82e1598bdfb72a017515.tar.gz
glibc-755b39d29bec64927aff82e1598bdfb72a017515.tar.bz2
(collate_read): Handle collating-element and reorder_after following copy statement correctly.
-rw-r--r--locale/programs/ld-collate.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/locale/programs/ld-collate.c b/locale/programs/ld-collate.c
index 63c379a..e9e92e2 100644
--- a/locale/programs/ld-collate.c
+++ b/locale/programs/ld-collate.c
@@ -2742,7 +2742,7 @@ collate_read (struct linereader *ldfile, struct localedef_t *result,
break;
}
- if (state != 0)
+ if (state != 0 && state != 2)
goto err_label;
arg = lr_token (ldfile, charmap, repertoire, verbose);
@@ -3533,7 +3533,9 @@ error while adding equivalent collating symbol"));
goto move_entry;
if (find_entry (&collate->elem_table, symstr, symlen,
- (void **) &seqp) == 0)
+ (void **) &seqp) == 0
+ && (seqp->last != NULL || seqp->next != NULL
+ || (collate->start != NULL && seqp == collate->start)))
{
move_entry:
/* Remove the entry from the old position. */