From: Ulrich Drepper Date: Fri, 23 Sep 2005 18:48:38 +0000 (+0000) Subject: [BZ #395] X-Git-Tag: cvs/fedora-glibc-20051003T2040~69 X-Git-Url: https://sourceware.org/git/?a=commitdiff_plain;h=294bda1b5a42d485ba39f59c05a25e542eb7fa0d;p=glibc.git [BZ #395] * iconvdata/jis0208.c (__jisx0208_from_ucs4_lat1): Reduce size of array. * iconvdata/jis0208.h (ucs4_to_jisx0208): Adjust access. 2004-08-13 GOTO Masanori [BZ #395] * iconvdata/jis0208.c: Remove 0x005C mapping from __jisx0208_from_ucs4_lat1. Reported by Fumitoshi UKAI 2005-09-23 Ulrich Drepper --- diff --git a/ChangeLog b/ChangeLog index 01dd44d8c0..a256fad136 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,16 @@ +2005-09-23 Ulrich Drepper + + * iconvdata/jis0208.c (__jisx0208_from_ucs4_lat1): Reduce size of + array. + * iconvdata/jis0208.h (ucs4_to_jisx0208): Adjust access. + +2004-08-13 GOTO Masanori + + [BZ #395] + * iconvdata/jis0208.c: Remove 0x005C mapping from + __jisx0208_from_ucs4_lat1. + Reported by Fumitoshi UKAI + 2005-09-23 Ulrich Drepper [BZ #394] diff --git a/iconvdata/jis0208.c b/iconvdata/jis0208.c index ef7aeb175a..16823f22d5 100644 --- a/iconvdata/jis0208.c +++ b/iconvdata/jis0208.c @@ -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 , 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" }; diff --git a/iconvdata/jis0208.h b/iconvdata/jis0208.h index 8255bafc62..329e30f9b2 100644 --- a/iconvdata/jis0208.h +++ b/iconvdata/jis0208.h @@ -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