[BZ #395]
authorUlrich Drepper <drepper@redhat.com>
Fri, 23 Sep 2005 18:48:38 +0000 (18:48 +0000)
committerUlrich Drepper <drepper@redhat.com>
Fri, 23 Sep 2005 18:48:38 +0000 (18:48 +0000)
* iconvdata/jis0208.c (__jisx0208_from_ucs4_lat1): Reduce size of
array.
* iconvdata/jis0208.h (ucs4_to_jisx0208): Adjust access.

2004-08-13  GOTO Masanori  <gotom@debian.or.jp>

[BZ #395]
* iconvdata/jis0208.c: Remove 0x005C mapping from
__jisx0208_from_ucs4_lat1.
Reported by Fumitoshi UKAI <ukai@debian.or.jp>

2005-09-23  Ulrich Drepper  <drepper@redhat.com>

ChangeLog
iconvdata/jis0208.c
iconvdata/jis0208.h

index 01dd44d..a256fad 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,18 @@
 2005-09-23  Ulrich Drepper  <drepper@redhat.com>
 
+       * iconvdata/jis0208.c (__jisx0208_from_ucs4_lat1): Reduce size of
+       array.
+       * iconvdata/jis0208.h (ucs4_to_jisx0208): Adjust access.
+
+2004-08-13  GOTO Masanori  <gotom@debian.or.jp>
+
+       [BZ #395]
+       * iconvdata/jis0208.c: Remove 0x005C mapping from
+       __jisx0208_from_ucs4_lat1.
+       Reported by Fumitoshi UKAI <ukai@debian.or.jp>
+
+2005-09-23  Ulrich Drepper  <drepper@redhat.com>
+
        [BZ #394]
        * libio/fmemopen.c (fmemopen_write): Return 0 instead of -1 if
        nothing can be written.
index ef7aeb1..16823f2 100644 (file)
@@ -1,5 +1,5 @@
 /* Mapping tables for JIS0208 handling.
-   Copyright (C) 1997, 1998, 2002 Free Software Foundation, Inc.
+   Copyright (C) 1997, 1998, 2002, 2004 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
 
@@ -1783,12 +1783,20 @@ const uint16_t __jis0208_to_ucs[0x1e80] =
 };
 
 
-const char __jisx0208_from_ucs4_lat1[256][2] =
+const char __jisx0208_from_ucs4_lat1[JIS0208_LAT1_MAX + 1
+                                    - JIS0208_LAT1_MIN][2] =
 {
-  [0x005C] = "\x21\x40", [0x00A2] = "\x21\x71", [0x00A3] = "\x21\x72",
-  [0x00A7] = "\x21\x78", [0x00A8] = "\x21\x2f", [0x00AC] = "\x22\x4c",
-  [0x00B0] = "\x21\x6B", [0x00B1] = "\x21\x5e", [0x00B4] = "\x21\x2d",
-  [0x00B6] = "\x22\x79", [0x00D7] = "\x21\x5f", [0x00F7] = "\x21\x60"
+  [0x00A2 - JIS0208_LAT1_MIN] = "\x21\x71",
+  [0x00A3 - JIS0208_LAT1_MIN] = "\x21\x72",
+  [0x00A7 - JIS0208_LAT1_MIN] = "\x21\x78",
+  [0x00A8 - JIS0208_LAT1_MIN] = "\x21\x2f",
+  [0x00AC - JIS0208_LAT1_MIN] = "\x22\x4c",
+  [0x00B0 - JIS0208_LAT1_MIN] = "\x21\x6B",
+  [0x00B1 - JIS0208_LAT1_MIN] = "\x21\x5e",
+  [0x00B4 - JIS0208_LAT1_MIN] = "\x21\x2d",
+  [0x00B6 - JIS0208_LAT1_MIN] = "\x22\x79",
+  [0x00D7 - JIS0208_LAT1_MIN] = "\x21\x5f",
+  [0x00F7 - JIS0208_LAT1_MIN] = "\x21\x60"
 };
 
 
index 8255baf..329e30f 100644 (file)
@@ -36,7 +36,10 @@ struct jisx0208_ucs_idx
 /* Conversion table.  */
 extern const uint16_t __jis0208_to_ucs[];
 
-extern const char __jisx0208_from_ucs4_lat1[256][2];
+#define JIS0208_LAT1_MIN 0xa2
+#define JIS0208_LAT1_MAX 0xf7
+extern const char __jisx0208_from_ucs4_lat1[JIS0208_LAT1_MAX + 1
+                                           - JIS0208_LAT1_MIN][2];
 extern const char __jisx0208_from_ucs4_greek[0xc1][2];
 extern const struct jisx0208_ucs_idx __jisx0208_from_ucs_idx[];
 extern const char __jisx0208_from_ucs_tab[][2];
@@ -80,8 +83,8 @@ ucs4_to_jisx0208 (uint32_t wch, char *s, size_t avail)
   if (avail < 2)
     return 0;
 
-  if (ch < 0x100)
-    cp = __jisx0208_from_ucs4_lat1[ch];
+  if (ch >= JIS0208_LAT1_MIN && ch <= JIS0208_LAT1_MAX)
+    cp = __jisx0208_from_ucs4_lat1[ch - JIS0208_LAT1_MIN];
   else if (ch >= 0x391 && ch <= 0x451)
     cp = __jisx0208_from_ucs4_greek[ch - 0x391];
   else