diff options
-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. */ |