diff --git a/mysql-test/r/ctype_sjis.result b/mysql-test/r/ctype_sjis.result
index d1976a516d2dc3bede136815992598f5630e1da6..dab5991b505df2a77e05e72165817ad35662622b 100644
--- a/mysql-test/r/ctype_sjis.result
+++ b/mysql-test/r/ctype_sjis.result
@@ -172,6 +172,6 @@ c2h
 ab_def
 drop table t1;
 SET NAMES sjis;
-SELECT HEX('佐淘 \圭') FROM DUAL;
-HEX('佐淘 \圭')
+SELECT HEX('佐淘 圭') FROM DUAL;
+HEX('佐淘 圭')
 8DB2939181408C5C
diff --git a/mysql-test/t/ctype_sjis.test b/mysql-test/t/ctype_sjis.test
index 1d807b5e9a87c6f93b077da09ebc577c66f75cbc..01e0b3345547a360b6da1a0450484619a7f4fd36 100644
--- a/mysql-test/t/ctype_sjis.test
+++ b/mysql-test/t/ctype_sjis.test
@@ -78,6 +78,6 @@ SET collation_connection='sjis_bin';
 
 --character_set sjis
 SET NAMES sjis;
-SELECT HEX('佐淘 \圭') FROM DUAL;
+SELECT HEX('佐淘 圭') FROM DUAL;
 
 # End of 4.1 tests
diff --git a/sql/sql_lex.cc b/sql/sql_lex.cc
index d2699b88aa428638285017d72736b571ba4c8e1c..0bbfc64e27202ca4304a78d8d7165e9be96a8901 100644
--- a/sql/sql_lex.cc
+++ b/sql/sql_lex.cc
@@ -304,18 +304,7 @@ static char *get_text(LEX *lex)
       found_escape=1;
       if (lex->ptr == lex->end_of_query)
 	return 0;
-#ifdef USE_MB
-      int l;
-      if (use_mb(cs) &&
-          (l = my_ismbchar(cs,
-                           (const char *)lex->ptr,
-                           (const char *)lex->end_of_query))) {
-          lex->ptr += l;
-          continue;
-      }
-      else
-#endif
-        yySkip();
+      yySkip();
     }
     else if (c == sep)
     {
@@ -344,9 +333,6 @@ static char *get_text(LEX *lex)
       {
 	uchar *to;
 
-        /* Re-use found_escape for tracking state of escapes */
-        found_escape= 0;
-
 	for (to=start ; str != end ; str++)
 	{
 #ifdef USE_MB
@@ -360,8 +346,7 @@ static char *get_text(LEX *lex)
 	      continue;
 	  }
 #endif
-	  if (!found_escape &&
-              !(lex->thd->variables.sql_mode & MODE_NO_BACKSLASH_ESCAPES) &&
+	  if (!(lex->thd->variables.sql_mode & MODE_NO_BACKSLASH_ESCAPES) &&
               *str == '\\' && str+1 != end)
 	  {
 	    switch(*++str) {
@@ -388,20 +373,14 @@ static char *get_text(LEX *lex)
 	      *to++= '\\';		// remember prefix for wildcard
 	      /* Fall through */
 	    default:
-              found_escape= 1;
-              str--;
+              *to++= *str;
 	      break;
 	    }
 	  }
-	  else if (!found_escape && *str == sep)
-          {
-            found_escape= 1;
-          }
+	  else if (*str == sep)
+	    *to++= *str++;		// Two ' or "
 	  else
-          {
 	    *to++ = *str;
-            found_escape= 0;
-          }
 	}
 	*to=0;
 	lex->yytoklen=(uint) (to-start);
diff --git a/tests/mysql_client_test.c b/tests/mysql_client_test.c
index b097198016852f4eac0ba8d0d46f36f979d8e10c..3876de58b0ea2bab359298ffb648b64f7164f3d1 100644
--- a/tests/mysql_client_test.c
+++ b/tests/mysql_client_test.c
@@ -12794,25 +12794,26 @@ from t2);");
 static void test_bug8378()
 {
 #if defined(HAVE_CHARSET_gbk) && !defined(EMBEDDED_LIBRARY)
-  MYSQL *lmysql;
+  MYSQL *old_mysql=mysql;
   char out[9]; /* strlen(TEST_BUG8378)*2+1 */
-  int len;
+  char buf[256];
+  int len, rc;
 
   myheader("test_bug8378");
 
   if (!opt_silent)
     fprintf(stdout, "\n Establishing a test connection ...");
-  if (!(lmysql= mysql_init(NULL)))
+  if (!(mysql= mysql_init(NULL)))
   {
     myerror("mysql_init() failed");
     exit(1);
   }
-  if (mysql_options(lmysql, MYSQL_SET_CHARSET_NAME, "gbk"))
+  if (mysql_options(mysql, MYSQL_SET_CHARSET_NAME, "gbk"))
   {
     myerror("mysql_options() failed");
     exit(1);
   }
-  if (!(mysql_real_connect(lmysql, opt_host, opt_user,
+  if (!(mysql_real_connect(mysql, opt_host, opt_user,
                            opt_password, current_db, opt_port,
                            opt_unix_socket, 0)))
   {
@@ -12822,12 +12823,18 @@ static void test_bug8378()
   if (!opt_silent)
     fprintf(stdout, " OK");
 
-  len= mysql_real_escape_string(lmysql, out, TEST_BUG8378_IN, 4);
+  len= mysql_real_escape_string(mysql, out, TEST_BUG8378_IN, 4);
 
   /* No escaping should have actually happened. */
   DIE_UNLESS(memcmp(out, TEST_BUG8378_OUT, len) == 0);
 
-  mysql_close(lmysql);
+  sprintf(buf, "SELECT '%s'", out);
+  rc=mysql_real_query(mysql, buf, strlen(buf));
+  myquery(rc);
+
+  mysql_close(mysql);
+
+  mysql=old_mysql;
 #endif
 }