changeset 97759:99656f6b55ce

(search_buffer): Set char_base to zero only at the end.
author Andreas Schwab <schwab@suse.de>
date Wed, 27 Aug 2008 10:56:15 +0000
parents fe0432f437b6
children 89093acf32a1
files src/ChangeLog src/search.c
diffstat 2 files changed, 11 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/src/ChangeLog	Wed Aug 27 07:32:00 2008 +0000
+++ b/src/ChangeLog	Wed Aug 27 10:56:15 2008 +0000
@@ -1,3 +1,7 @@
+2008-08-27  Andreas Schwab  <schwab@suse.de>
+
+	* search.c (search_buffer): Set char_base to zero only at the end.
+
 2008-08-27  Kenichi Handa  <handa@m17n.org>
 
 	* fileio.c (report_file_error): Fix handling of multibyte error
--- a/src/search.c	Wed Aug 27 07:32:00 2008 +0000
+++ b/src/search.c	Wed Aug 27 10:56:15 2008 +0000
@@ -1340,11 +1340,7 @@
 			      if (this_char_base > 0)
 				boyer_moore_ok = 0;
 			      else
-				{
-				  this_char_base = 0;
-				  if (char_base < 0)
-				    char_base = this_char_base;
-				}
+				this_char_base = 0;
 			    }
 			  else if (CHAR_BYTE8_P (inverse))
 			    /* Boyer-moore search can't handle a
@@ -1356,8 +1352,7 @@
 			      this_char_base = inverse & ~0x3F;
 			      if (char_base < 0)
 				char_base = this_char_base;
-			      else if (char_base > 0
-				       && this_char_base != char_base)
+			      else if (this_char_base != char_base)
 				boyer_moore_ok = 0;
 			    }
 			  else if ((inverse & ~0x3F) != this_char_base)
@@ -1368,8 +1363,6 @@
 			}
 		    }
 		}
-	      if (char_base < 0)
-		char_base = 0;
 
 	      /* Store this character into the translated pattern.  */
 	      bcopy (str, pat, charlen);
@@ -1377,6 +1370,11 @@
 	      base_pat += in_charlen;
 	      len_byte -= in_charlen;
 	    }
+
+	  /* If char_base is still negative we didn't find any translated
+	     non-ASCII characters.  */
+	  if (char_base < 0)
+	    char_base = 0;
 	}
       else
 	{