OSDN Git Service

バイナリファイルを入力したときに落ちる問題の修正
authorRei FURUKAWA <rei_furukawa@users.sourceforge.jp>
Fri, 24 Dec 2004 07:49:38 +0000 (07:49 +0000)
committerRei FURUKAWA <rei_furukawa@users.sourceforge.jp>
Fri, 24 Dec 2004 07:49:38 +0000 (07:49 +0000)
nkf.c

diff --git a/nkf.c b/nkf.c
index 77e5dda..d52c212 100644 (file)
--- a/nkf.c
+++ b/nkf.c
@@ -39,7 +39,7 @@
 **        E-Mail: furukawa@tcp-ip.or.jp
 **    \e$B$^$G8fO"Mm$r$*4j$$$7$^$9!#\e(B
 ***********************************************************************/
 **        E-Mail: furukawa@tcp-ip.or.jp
 **    \e$B$^$G8fO"Mm$r$*4j$$$7$^$9!#\e(B
 ***********************************************************************/
-/* $Id: nkf.c,v 1.48 2004/12/18 10:33:53 rei_furukawa Exp $ */
+/* $Id: nkf.c,v 1.49 2004/12/23 22:49:38 rei_furukawa Exp $ */
 #define NKF_VERSION "2.0.4"
 #define NKF_RELEASE_DATE "2004-12-01"
 #include "config.h"
 #define NKF_VERSION "2.0.4"
 #define NKF_RELEASE_DATE "2004-12-01"
 #include "config.h"
@@ -2817,19 +2817,23 @@ e2s_conv(c2, c1, p2, p1)
 {
     int val = 0;
     unsigned short *ptr;
 {
     int val = 0;
     unsigned short *ptr;
+    int ndx;
+    extern unsigned short *x0212_shiftjis[];
 #ifdef X0212_ENABLE
     if ((c2 & 0xff00) == 0x8f00){
 #ifdef X0212_ENABLE
     if ((c2 & 0xff00) == 0x8f00){
-        extern unsigned short *x0212_shiftjis[];
-        ptr = x0212_shiftjis[(c2 & 0x7f) - 0x21];
-        if (ptr){
-            val = ptr[(c1 & 0x7f) - 0x21];
-        }
-        if (val){
-            c2 = val >> 8;
-            c1 = val & 0xff;
-            if (p2) *p2 = c2;
-            if (p1) *p1 = c1;
-            return 0;
+        ndx = c2 & 0x7f;
+        if (0x21 <= ndx && ndx <= 0x7e){
+            ptr = x0212_shiftjis[ndx - 0x21];
+            if (ptr){
+                val = ptr[(c1 & 0x7f) - 0x21];
+            }
+            if (val){
+                c2 = val >> 8;
+                c1 = val & 0xff;
+                if (p2) *p2 = c2;
+                if (p1) *p1 = c1;
+                return 0;
+            }
         }
         c2 = x0212_shift(c2);
     }
         }
         c2 = x0212_shift(c2);
     }