summary refs log tree commit diff
path: root/locale/programs/ld-collate.c
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2002-02-01 21:08:09 +0000
committerUlrich Drepper <drepper@redhat.com>2002-02-01 21:08:09 +0000
commit9c1084a38005ab319ce3f34e2faf087b59e9b0e8 (patch)
treefaa821863cc5c2afc2dd2e1a3d0f403fae65db64 /locale/programs/ld-collate.c
parent635f35fcf4974d1363dbb57524102e23f8157036 (diff)
downloadglibc-9c1084a38005ab319ce3f34e2faf087b59e9b0e8.tar.gz
glibc-9c1084a38005ab319ce3f34e2faf087b59e9b0e8.tar.xz
glibc-9c1084a38005ab319ce3f34e2faf087b59e9b0e8.zip
Update.
2002-01-18  Isamu Hasegawa  <isamu@yamato.ibm.com>

	* locale/program/ld-collate.c (collate_finish): Assign a wide
	char collation sequence value to multi character collating
	elements, and avoid over writing by non-character elements.
Diffstat (limited to 'locale/programs/ld-collate.c')
-rw-r--r--locale/programs/ld-collate.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/locale/programs/ld-collate.c b/locale/programs/ld-collate.c
index 4f587c113c..0da1261bd8 100644
--- a/locale/programs/ld-collate.c
+++ b/locale/programs/ld-collate.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1995-1999, 2000, 2001 Free Software Foundation, Inc.
+/* Copyright (C) 1995-1999, 2000, 2001, 2002 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@gnu.org>, 1995.
 
@@ -1672,6 +1672,9 @@ collate_finish (struct localedef_t *locale, const struct charmap_t *charmap)
 
 	  runp->wcseqorder = wcseqact++;
 	}
+      else if (runp->mbs != NULL && runp->weights != NULL)
+	/* This is for collation elements.  */
+	runp->wcseqorder = wcseqact++;
 
       /* Up to the next entry.  */
       runp = runp->next;
@@ -1706,8 +1709,9 @@ collate_finish (struct localedef_t *locale, const struct charmap_t *charmap)
 	  struct element_t *lastp;
 
 	  /* Insert the collation sequence value.  */
-	  collseq_table_add (&collate->wcseqorder, runp->wcs[0],
-			     runp->wcseqorder);
+	  if (runp->is_character)
+	    collseq_table_add (&collate->wcseqorder, runp->wcs[0],
+			       runp->wcseqorder);
 
 	  /* Find the point where to insert in the list.  */
 	  e = wchead_table_get (&collate->wcheads, runp->wcs[0]);