diff src/regex.c @ 4832:07fa38c30fdf

fix messed-up fastmap calculation in charset_mule_not
author Ben Wing <ben@xemacs.org>
date Sun, 10 Jan 2010 00:49:30 -0600
parents aa5ed11f473b
children 16112448d484
line wrap: on
line diff
--- a/src/regex.c	Sun Jan 10 00:49:14 2010 -0600
+++ b/src/regex.c	Sun Jan 10 00:49:30 2010 -0600
@@ -3841,6 +3841,7 @@
 	  {
 	    int nentries;
 	    int i;
+	    int smallest_prev = 0;
 
 	    nentries = unified_range_table_nentries (p);
 	    for (i = 0; i < nentries; i++)
@@ -3848,7 +3849,6 @@
 		EMACS_INT first, last;
 		Lisp_Object dummy_val;
 		int jj;
-		int smallest_prev = 0;
 
 		unified_range_table_get_range (p, i, &first, &last,
 					       &dummy_val);
@@ -3858,6 +3858,11 @@
 		if (smallest_prev >= 0x80)
 		  break;
 	      }
+
+	    /* Also set lead bytes after the end */
+	    for (i = smallest_prev; i < 0x80; i++)
+	      fastmap[i] = 1;
+
 	    /* Calculating which leading bytes are actually allowed
 	       here is rather difficult, so we just punt and allow
 	       all of them. */