changeset 4282:47a0e7ce7045

(re_search_2): Fix for the case of unibyte buffer.
author Kenichi Handa <handa@m17n.org>
date Mon, 07 Oct 2002 12:58:29 +0000
parents b95bafb2e969
children 64399a5b9721
files regex.c
diffstat 1 files changed, 20 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/regex.c
+++ b/regex.c
@@ -4099,13 +4099,26 @@
 	      int room = (startpos >= size1
 			  ? size2 + size1 - startpos
 			  : size1 - startpos);
-	      buf_ch = RE_STRING_CHAR (d, room);
-	      if (! target_multibyte)
-		MAKE_CHAR_MULTIBYTE (buf_ch);
-	      buf_ch = TRANSLATE (buf_ch);
-
-	      if (! fastmap[CHAR_LEADING_CODE (buf_ch)])
-		goto advance;
+
+	      if (multibyte)
+		{
+		  /* Case of Emacs.  */
+		  if (target_multibyte)
+		    buf_ch = RE_STRING_CHAR (d, room);
+		  else
+		    {
+		      buf_ch = *d;
+		      MAKE_CHAR_MULTIBYTE (buf_ch);
+		    }
+		  buf_ch = TRANSLATE (buf_ch);
+		  if (! fastmap[CHAR_LEADING_CODE (buf_ch)])
+		    goto advance;
+		}
+	      else
+		{
+		  if (! fastmap[TRANSLATE (*d)])
+		    goto advance;
+		}
 	    }
 	}