diff options
author | Ulrich Drepper <drepper@redhat.com> | 2001-08-03 05:33:30 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2001-08-03 05:33:30 +0000 |
commit | 755b39d29bec64927aff82e1598bdfb72a017515 (patch) | |
tree | c9e341fbc84e01470176ae337b8cc63d3e8cda37 /locale | |
parent | 518bd01a3d353c67e9db880c8faa70cf15855eda (diff) | |
download | glibc-755b39d29bec64927aff82e1598bdfb72a017515.tar.gz glibc-755b39d29bec64927aff82e1598bdfb72a017515.tar.xz glibc-755b39d29bec64927aff82e1598bdfb72a017515.zip |
(collate_read): Handle collating-element and reorder_after following copy statement correctly.
Diffstat (limited to 'locale')
-rw-r--r-- | locale/programs/ld-collate.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/locale/programs/ld-collate.c b/locale/programs/ld-collate.c index 63c379ae84..e9e92e2bf4 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. */ |