]> granicus.if.org Git - onig/commitdiff
implement is_valid_mbc_string() in big5
authorK.Kosako <kkosako0@gmail.com>
Wed, 21 Sep 2016 23:38:08 +0000 (08:38 +0900)
committerK.Kosako <kkosako0@gmail.com>
Wed, 21 Sep 2016 23:38:08 +0000 (08:38 +0900)
src/big5.c

index 3d449759a7a360fddfd00db864c453c90d8f5b8f..bc713abdd30766fa561a45125cf8262c1e5182ff 100644 (file)
@@ -55,9 +55,28 @@ big5_mbc_enc_len(const UChar* p)
 }
 
 static int
-is_valid_mbc_string(const UChar* s, const UChar* end)
+is_valid_mbc_string(const UChar* p, const UChar* end)
 {
-  return onigenc_length_check_is_valid_mbc_string(ONIG_ENCODING_BIG5, s, end);
+  while (p < end) {
+    if (*p < 0x80) {
+      p++;
+    }
+    else if (*p < 0xa1) {
+      return FALSE;
+    }
+    else if (*p < 0xff) {
+      p++;
+      if (p >= end)  return FALSE;
+      if (*p < 0x40) return FALSE;
+      if (*p > 0x7e && *p < 0xa1) return FALSE;
+      if (*p == 0xff) return FALSE;
+      p++;
+    }
+    else
+      return FALSE;
+  }
+
+  return TRUE;
 }
 
 static OnigCodePoint