]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix last change in bidi_mirror_char.
authorEli Zaretskii <eliz@gnu.org>
Sun, 27 May 2012 12:27:07 +0000 (15:27 +0300)
committerEli Zaretskii <eliz@gnu.org>
Sun, 27 May 2012 12:27:07 +0000 (15:27 +0300)
src/ChangeLog
src/bidi.c

index 264bf1e578c38fe62a86341c7a5ac100422d134c..dabee8583200203ed6f41c6a671583791877ae10 100644 (file)
@@ -1,3 +1,7 @@
+2012-05-27  Eli Zaretskii  <eliz@gnu.org>
+
+       * bidi.c (bidi_mirror_char): Fix last change.
+
 2012-05-27  Andreas Schwab  <schwab@linux-m68k.org>
 
        * unexmacosx.c (copy_data_segment): Truncate after 16 characters
index 70274560ddab43c7061efb7e0eb5ef8e02ba4c59..29abfb9083889a9f93b89ecf04fa799b0f86b5c5 100644 (file)
@@ -204,8 +204,18 @@ bidi_mirror_char (int c)
   val = CHAR_TABLE_REF (bidi_mirror_table, c);
   if (INTEGERP (val))
     {
+      int v = XINT (val);
+
+      /* In a build with extra checks, make sure the value does not
+        overflow a 32-bit int.  */
       eassert (CHAR_VALID_P (XINT (val)));
-      return XINT (val);
+
+      /* Minimal test we must do in optimized builds, to prevent weird
+        crashes further down the road.  */
+      if (v < 0 || v > MAX_CHAR)
+       abort ();
+
+      return v;
     }
 
   return c;