summaryrefslogtreecommitdiff
path: root/src/sjis.c
diff options
context:
space:
mode:
authorJörg Frings-Fürst <debian@jff-webhosting.net>2016-11-09 22:19:08 +0100
committerJörg Frings-Fürst <debian@jff-webhosting.net>2016-11-09 22:19:08 +0100
commit81f65b49e828952d496c80a991397fdac96feea9 (patch)
tree1256d7d214a97a3c130dc921323392a7f25c2c21 /src/sjis.c
parent4abcda3c3b7d9cb44036840ec0af01d5294dedc5 (diff)
New upstream version 6.1.2upstream/6.1.2
Diffstat (limited to 'src/sjis.c')
-rw-r--r--src/sjis.c31
1 files changed, 29 insertions, 2 deletions
diff --git a/src/sjis.c b/src/sjis.c
index a607b3d..3378474 100644
--- a/src/sjis.c
+++ b/src/sjis.c
@@ -77,9 +77,36 @@ 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_SJIS, s, end);
+ while (p < end) {
+ if (*p < 0x80) {
+ p++;
+ }
+ else if (*p < 0xa1) {
+ if (*p == 0xa0 || *p == 0x80)
+ return FALSE;
+ p++;
+ if (p >= end) return FALSE;
+ if (*p < 0x40 || *p > 0xfc || *p == 0x7f)
+ return FALSE;
+ p++;
+ }
+ else if (*p < 0xe0) {
+ p++;
+ }
+ else if (*p < 0xfd) {
+ p++;
+ if (p >= end) return FALSE;
+ if (*p < 0x40 || *p > 0xfc || *p == 0x7f)
+ return FALSE;
+ p++;
+ }
+ else
+ return FALSE;
+ }
+
+ return TRUE;
}
static int