about summary refs log tree commit diff
path: root/locale/programs/ld-identification.c
diff options
context:
space:
mode:
Diffstat (limited to 'locale/programs/ld-identification.c')
-rw-r--r--locale/programs/ld-identification.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/locale/programs/ld-identification.c b/locale/programs/ld-identification.c
index 12e32f859e..9a6dfdf1fd 100644
--- a/locale/programs/ld-identification.c
+++ b/locale/programs/ld-identification.c
@@ -185,6 +185,7 @@ identification_output (struct localedef_t *locale, struct charmap_t *charmap,
   uint32_t idx[_NL_ITEM_INDEX (_NL_NUM_LC_IDENTIFICATION)];
   size_t cnt = 0;
   size_t num;
+  size_t last_idx;
 
   data.magic = LIMAGIC (LC_IDENTIFICATION);
   data.n = _NL_ITEM_INDEX (_NL_NUM_LC_IDENTIFICATION);
@@ -267,19 +268,26 @@ identification_output (struct localedef_t *locale, struct charmap_t *charmap,
   ++cnt;
 
   idx[cnt - 2] = idx[cnt - 3] + iov[cnt - 1].iov_len;
+  last_idx = cnt - 1;
+  idx[last_idx] = idx[cnt - 2];
   for (num = 0; num < __LC_LAST; ++num)
     if (num != LC_ALL)
       {
 	iov[cnt].iov_base = (void *) identification->category[num];
 	iov[cnt].iov_len = strlen (iov[cnt].iov_base) + 1;
+	idx[last_idx] += iov[cnt].iov_len;
 	++cnt;
       }
 
+  assert (last_idx == _NL_ITEM_INDEX (_NL_NUM_LC_IDENTIFICATION) - 1);
+  iov[cnt].iov_base = (void *) charmap->code_set_name;
+  iov[cnt].iov_len = strlen (iov[cnt].iov_base) + 1;
+  ++cnt;
+
   assert (cnt == (2 + _NL_ITEM_INDEX (_NL_NUM_LC_IDENTIFICATION)
 		  + (__LC_LAST - 2)));
 
-  write_locale_data (output_path, "LC_IDENTIFICATION",
-		     2 + _NL_ITEM_INDEX (_NL_NUM_LC_IDENTIFICATION), iov);
+  write_locale_data (output_path, "LC_IDENTIFICATION", cnt, iov);
 }