* src/print.c (PRINT_CIRCLE_CANDIDATE_P): New macro.
authorStefan Monnier <monnier@iro.umontreal.ca>
Wed, 16 Mar 2011 17:34:26 +0000 (13:34 -0400)
committerStefan Monnier <monnier@iro.umontreal.ca>
Wed, 16 Mar 2011 17:34:26 +0000 (13:34 -0400)
(print_preprocess, print_object): New macro to fix last change.

src/ChangeLog
src/print.c

index e25ed31..c43d3ba 100644 (file)
@@ -1,5 +1,8 @@
 2011-03-16  Stefan Monnier  <monnier@iro.umontreal.ca>
 
+       * print.c (PRINT_CIRCLE_CANDIDATE_P): New macro.
+       (print_preprocess, print_object): New macro to fix last change.
+
        * print.c (print_preprocess): Don't forget font objects.
 
 2011-03-16  Juanma Barranquero  <lekktu@gmail.com>
index f48ba57..c701164 100644 (file)
@@ -1173,6 +1173,16 @@ print (Lisp_Object obj, register Lisp_Object printcharfun, int escapeflag)
   print_object (obj, printcharfun, escapeflag);
 }
 
+#define PRINT_CIRCLE_CANDIDATE_P(obj)                                  \
+  (STRINGP (obj) || CONSP (obj)                                                \
+   || (VECTORLIKEP (obj)                                               \
+      && (VECTORP (obj) || COMPILEDP (obj)                             \
+         || CHAR_TABLE_P (obj) || SUB_CHAR_TABLE_P (obj)               \
+         || HASH_TABLE_P (obj) || FONTP (obj)))                        \
+   || (! NILP (Vprint_gensym)                                          \
+       && SYMBOLP (obj)                                                        \
+       && !SYMBOL_INTERNED_P (obj)))
+
 /* Construct Vprint_number_table according to the structure of OBJ.
    OBJ itself and all its elements will be added to Vprint_number_table
    recursively if it is a list, vector, compiled function, char-table,
@@ -1207,12 +1217,7 @@ print_preprocess (Lisp_Object obj)
   halftail = obj;
 
  loop:
-  if (STRINGP (obj) || CONSP (obj) || VECTORP (obj)
-      || COMPILEDP (obj) || CHAR_TABLE_P (obj) || SUB_CHAR_TABLE_P (obj)
-      || HASH_TABLE_P (obj) || FONTP (obj)
-      || (! NILP (Vprint_gensym)
-         && SYMBOLP (obj)
-         && !SYMBOL_INTERNED_P (obj)))
+  if (PRINT_CIRCLE_CANDIDATE_P (obj))
     {
       if (!HASH_TABLE_P (Vprint_number_table))
        {
@@ -1389,12 +1394,7 @@ print_object (Lisp_Object obj, register Lisp_Object printcharfun, int escapeflag
     error ("Apparently circular structure being printed");
 
   /* Detect circularities and truncate them.  */
-  if (STRINGP (obj) || CONSP (obj) || VECTORP (obj)
-      || COMPILEDP (obj) || CHAR_TABLE_P (obj) || SUB_CHAR_TABLE_P (obj)
-      || HASH_TABLE_P (obj)
-      || (! NILP (Vprint_gensym)
-         && SYMBOLP (obj)
-         && !SYMBOL_INTERNED_P (obj)))
+  if (PRINT_CIRCLE_CANDIDATE_P (obj))
     {
       if (NILP (Vprint_circle) && NILP (Vprint_gensym))
        {