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++)
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;
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;
}
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;