From 2e82008bacf85acafa1d657616690e442f997686 Mon Sep 17 00:00:00 2001
From: unknown <serg@serg.mylan>
Date: Sat, 6 Dec 2003 19:05:26 +0100
Subject: [PATCH] fix for my_mbcharlen(charset, c) to return 1 for single-byte
 characters (isn't it obvious ?)

mysys/charset.c:
  all charsets support my_mbcharlen - no need to protect it with use_mb()
sql/sql_load.cc:
  all charsets support my_mbcharlen - no need to protect it with use_mb()
---
 mysys/charset.c        | 2 +-
 sql/sql_load.cc        | 5 ++---
 strings/ctype-big5.c   | 2 +-
 strings/ctype-euc_kr.c | 2 +-
 strings/ctype-gb2312.c | 2 +-
 strings/ctype-gbk.c    | 2 +-
 strings/ctype-sjis.c   | 2 +-
 strings/ctype-ujis.c   | 2 +-
 8 files changed, 9 insertions(+), 10 deletions(-)

diff --git a/mysys/charset.c b/mysys/charset.c
index e97ac0675d6..4111dd246cb 100644
--- a/mysys/charset.c
+++ b/mysys/charset.c
@@ -82,7 +82,7 @@ static void init_state_maps(CHARSET_INFO *cs)
     else if (my_isdigit(cs,i))
       state_map[i]=(uchar) MY_LEX_NUMBER_IDENT;
 #if defined(USE_MB) && defined(USE_MB_IDENT)
-    else if (use_mb(cs) && (my_mbcharlen(cs, i)>1))
+    else if (my_mbcharlen(cs, i)>1)
       state_map[i]=(uchar) MY_LEX_IDENT;
 #endif
     else if (!my_isgraph(cs,i))
diff --git a/sql/sql_load.cc b/sql/sql_load.cc
index 0e7895689b5..0f39ab2663f 100644
--- a/sql/sql_load.cc
+++ b/sql/sql_load.cc
@@ -759,8 +759,7 @@ int READ_INFO::read_field()
     {
       chr = GET;
 #ifdef USE_MB
-      if (use_mb(read_charset) &&
-          (my_mbcharlen(read_charset, chr) >1 )&&
+      if ((my_mbcharlen(read_charset, chr) > 1) &&
           to+my_mbcharlen(read_charset, chr) <= end_of_buff)
       {
 	  uchar* p = (uchar*)to;
@@ -946,7 +945,7 @@ int READ_INFO::next_line()
   {
     int chr = GET;
 #ifdef USE_MB
-   if (use_mb(read_charset) && (my_mbcharlen(read_charset, chr) >1 ))
+   if (my_mbcharlen(read_charset, chr) > 1)
    {
        for (int i=1;
             chr != my_b_EOF && i<my_mbcharlen(read_charset, chr);
diff --git a/strings/ctype-big5.c b/strings/ctype-big5.c
index 878493bc31f..b7a87e21f0f 100644
--- a/strings/ctype-big5.c
+++ b/strings/ctype-big5.c
@@ -401,7 +401,7 @@ static int ismbchar_big5(CHARSET_INFO *cs __attribute__((unused)),
 
 static int mbcharlen_big5(CHARSET_INFO *cs __attribute__((unused)), uint c)
 {
-  return (isbig5head(c)? 2: 0);
+  return (isbig5head(c)? 2 : 1);
 }
 
 /* page 0 0xA140-0xC7FC */
diff --git a/strings/ctype-euc_kr.c b/strings/ctype-euc_kr.c
index d47c4268642..ace0c4aef5d 100644
--- a/strings/ctype-euc_kr.c
+++ b/strings/ctype-euc_kr.c
@@ -193,7 +193,7 @@ static int ismbchar_euc_kr(CHARSET_INFO *cs __attribute__((unused)),
 
 static int mbcharlen_euc_kr(CHARSET_INFO *cs __attribute__((unused)),uint c)
 {
-  return (iseuc_kr(c) ? 2 : 0);
+  return (iseuc_kr(c) ? 2 : 1);
 }
 
 
diff --git a/strings/ctype-gb2312.c b/strings/ctype-gb2312.c
index d429fa34eea..248755785f1 100644
--- a/strings/ctype-gb2312.c
+++ b/strings/ctype-gb2312.c
@@ -174,7 +174,7 @@ static int ismbchar_gb2312(CHARSET_INFO *cs __attribute__((unused)),
 
 static int mbcharlen_gb2312(CHARSET_INFO *cs __attribute__((unused)),uint c)
 {
-  return (isgb2312head(c)? 2:0);
+  return (isgb2312head(c)? 2 : 1);
 }
 
 
diff --git a/strings/ctype-gbk.c b/strings/ctype-gbk.c
index fa7aa175103..3b2f5b784ed 100644
--- a/strings/ctype-gbk.c
+++ b/strings/ctype-gbk.c
@@ -2721,7 +2721,7 @@ static int ismbchar_gbk(CHARSET_INFO *cs __attribute__((unused)),
 
 static int mbcharlen_gbk(CHARSET_INFO *cs __attribute__((unused)),uint c)
 {
-  return (isgbkhead(c)? 2:0);
+  return (isgbkhead(c)? 2 : 1);
 }
 
 /* page 0 0x8140-0xFE4F */
diff --git a/strings/ctype-sjis.c b/strings/ctype-sjis.c
index f302e678b9f..d1cabbd72d6 100644
--- a/strings/ctype-sjis.c
+++ b/strings/ctype-sjis.c
@@ -191,7 +191,7 @@ static int ismbchar_sjis(CHARSET_INFO *cs __attribute__((unused)),
 
 static int mbcharlen_sjis(CHARSET_INFO *cs __attribute__((unused)),uint c)
 {
-  return (issjishead((uchar) c) ? 2: 0);
+  return (issjishead((uchar) c) ? 2 : 1);
 }
 
 
diff --git a/strings/ctype-ujis.c b/strings/ctype-ujis.c
index 29375aca727..484ee605273 100644
--- a/strings/ctype-ujis.c
+++ b/strings/ctype-ujis.c
@@ -196,7 +196,7 @@ static int ismbchar_ujis(CHARSET_INFO *cs __attribute__((unused)),
 
 static int mbcharlen_ujis(CHARSET_INFO *cs __attribute__((unused)),uint c)
 {
-  return (isujis(c)? 2: isujis_ss2(c)? 2: isujis_ss3(c)? 3: 0);
+  return (isujis(c)? 2: isujis_ss2(c)? 2: isujis_ss3(c)? 3: 1);
 }