(Fchar_equal): Fix case-conversion code.
authorRichard M. Stallman <rms@gnu.org>
Tue, 20 Jan 1998 06:05:53 +0000 (06:05 +0000)
committerRichard M. Stallman <rms@gnu.org>
Tue, 20 Jan 1998 06:05:53 +0000 (06:05 +0000)
src/editfns.c

index 7f47d59..fa6881c 100644 (file)
@@ -2424,14 +2424,21 @@ Case is ignored if `case-fold-search' is non-nil in the current buffer.")
   (c1, c2)
      register Lisp_Object c1, c2;
 {
+  int i1, i2;
   CHECK_NUMBER (c1, 0);
   CHECK_NUMBER (c2, 1);
 
-  if (XINT (c1) == XINT (c2)
-      && (NILP (current_buffer->case_fold_search)
-         || DOWNCASE (XFASTINT (c1)) == DOWNCASE (XFASTINT (c2))))
+  if (XINT (c1) == XINT (c2))
     return Qt;
-  return Qnil;
+  if (NILP (current_buffer->case_fold_search))
+    return Qnil;
+
+  /* Do these in separate statements,
+     then compare the variables.
+     because of the way DOWNCASE uses temp variables.  */
+  i1 = DOWNCASE (XFASTINT (c1));
+  i2 = DOWNCASE (XFASTINT (c2));
+  return (i1 == i2 ? Qt :  Qnil);
 }
 \f
 /* Transpose the markers in two regions of the current buffer, and