(VALBITS, GCTYPEBITS): Deleted; default is better.
[bpt/emacs.git] / src / fns.c
index 0ef7ed3..e75493d 100644 (file)
--- a/src/fns.c
+++ b/src/fns.c
@@ -103,8 +103,10 @@ A byte-code function object is also allowed.")
  retry:
   if (STRINGP (obj))
     XSETFASTINT (val, XSTRING (obj)->size);
-  else if (VECTORP (obj) || COMPILEDP (obj))
+  else if (VECTORP (obj))
     XSETFASTINT (val, XVECTOR (obj)->size);
+  else if (COMPILEDP (obj))
+    XSETFASTINT (val, XVECTOR (obj)->size & PSEUDOVECTOR_SIZE_MASK);
   else if (CONSP (obj))
     {
       for (i = 0, tail = obj; !NILP (tail); i++)
@@ -127,7 +129,7 @@ A byte-code function object is also allowed.")
 
 DEFUN ("string-equal", Fstring_equal, Sstring_equal, 2, 2, 0,
   "T if two strings have identical contents.\n\
-Case is significant.\n\
+Case is significant, but text properties are ignored.\n\
 Symbols are also allowed; their print names are used instead.")
   (s1, s2)
      register Lisp_Object s1, s2;
@@ -930,6 +932,13 @@ internal_equal (o1, o2, depth)
        return 0;
       if (bcmp (XSTRING (o1)->data, XSTRING (o2)->data, XSTRING (o1)->size))
        return 0;
+#ifdef USE_TEXT_PROPERTIES
+      /* If the strings have intervals, verify they match;
+        if not, they are unequal.  */
+      if ((XSTRING (o1)->intervals != 0 || XSTRING (o2)->intervals != 0)
+         && ! compare_string_intervals (o1, o2))
+       return 0;
+#endif
       return 1;
     }
   return 0;
@@ -1202,6 +1211,10 @@ Also accepts Space to mean yes, or Delete to mean no.")
        }
       else if (EQ (def, intern ("quit")))
        Vquit_flag = Qt;
+      /* We want to exit this command for exit-prefix,
+        and this is the only way to do it.  */
+      else if (EQ (def, intern ("exit-prefix")))
+       Vquit_flag = Qt;
 
       QUIT;