diff src/data.c @ 159:3bb7ccffb0c0 r20-3b6

Import from CVS: tag r20-3b6
author cvs
date Mon, 13 Aug 2007 09:41:43 +0200
parents 25f70ba0133c
children 28f395d8dc7a
line wrap: on
line diff
--- a/src/data.c	Mon Aug 13 09:40:48 2007 +0200
+++ b/src/data.c	Mon Aug 13 09:41:43 2007 +0200
@@ -77,6 +77,8 @@
 
 int debug_ebola_backtrace_length;
 
+#include "backtrace.h"
+
 int
 eq_with_ebola_notice (Lisp_Object obj1, Lisp_Object obj2)
 {
@@ -84,9 +86,23 @@
       && (debug_issue_ebola_notices >= 2
 	  || XREALINT (obj1) == XREALINT (obj2)))
     {
+      struct backtrace *bt = backtrace_list;
+      char *p;
       /* Continuing the joke by printing `Ebola warning!!!' confuses */
       /* too many people.  The message must be printed because Emacs used */
       /* to work differently for two decades. */
+#ifndef LRECORD_SYMBOL
+      /* temporary hack that will probably be around too long -slb */
+      if (XTYPE(*bt->function) == Lisp_Symbol)
+	{
+	  p = (XSYMBOL(*bt->function)->name)->_data;
+	  if (!strcmp(p, "byte-compile-constant") ||
+	      !strcmp(p, "byte-compile-constants-vector") ||
+	      !strcmp(p, "byte-optimize-minus") ||
+	      !strcmp(p, "byte-optimize-plus") ||
+	      !strcmp(p, "byte-decompile-bytecode-1")) goto sc;
+	}
+#endif
       stderr_out("Comparison between integer and character is constant nil (");
       Fprinc (obj1, Qexternal_debugging_output);
       stderr_out (" and ");
@@ -94,7 +110,7 @@
       stderr_out (")\n");
       debug_short_backtrace (debug_ebola_backtrace_length);
     }
-
+sc:
   return EQ (obj1, obj2);
 }
 
@@ -2323,7 +2339,7 @@
 Length (in stack frames) of short backtrace printed out in Ebola notices.
 See `debug-issue-ebola-notices'.
 */ );
-  debug_ebola_backtrace_length = 8;
+  debug_ebola_backtrace_length = 32;
 
 #endif /* DEBUG_XEMACS */
 }