aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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. */