diff src/gui-x.c @ 771:943eaba38521

[xemacs-hg @ 2002-03-13 08:51:24 by ben] The big ben-mule-21-5 check-in! Various files were added and deleted. See CHANGES-ben-mule. There are still some test suite failures. No crashes, though. Many of the failures have to do with problems in the test suite itself rather than in the actual code. I'll be addressing these in the next day or so -- none of the test suite failures are at all critical. Meanwhile I'll be trying to address the biggest issues -- i.e. build or run failures, which will almost certainly happen on various platforms. All comments should be sent to ben@xemacs.org -- use a Cc: if necessary when sending to mailing lists. There will be pre- and post- tags, something like pre-ben-mule-21-5-merge-in, and post-ben-mule-21-5-merge-in.
author ben
date Wed, 13 Mar 2002 08:54:06 +0000
parents fdefd0186b75
children e38acbeb1cae
line wrap: on
line diff
--- a/src/gui-x.c	Fri Mar 08 13:33:14 2002 +0000
+++ b/src/gui-x.c	Wed Mar 13 08:54:06 2002 +0000
@@ -1,6 +1,6 @@
 /* General GUI code -- X-specific. (menubars, scrollbars, toolbars, dialogs)
    Copyright (C) 1995 Board of Trustees, University of Illinois.
-   Copyright (C) 1995, 1996, 2000 Ben Wing.
+   Copyright (C) 1995, 1996, 2000, 2001 Ben Wing.
    Copyright (C) 1995 Sun Microsystems, Inc.
    Copyright (C) 1998 Free Software Foundation, Inc.
 
@@ -382,16 +382,16 @@
   return retval;
 }
 
-/* This does the dirty work.  gc_currently_forbidden is 1 when this is called.
- */
+/* This does the dirty work.  begin_gc_forbidden() is active when this is
+ called. */
 int
 button_item_to_widget_value (Lisp_Object gui_object_instance,
 			     Lisp_Object gui_item, widget_value *wv,
 			     int allow_text_field_p, int no_keys_p,
 			     int menu_entry_p, int accel_p)
 {
-  /* This function cannot GC because gc_currently_forbidden is set when
-     it's called */
+  /* This function cannot GC because begin_gc_forbidden() is active when
+     it's called. */
   Lisp_Gui_Item* pgui = 0;
 
   /* degenerate case */
@@ -627,7 +627,7 @@
 {
   /* This function can GC */
   widget_value *control = 0, *tmp = 0;
-  int count = specpdl_depth ();
+  int count;
   Lisp_Object wv_closure;
 
   if (NILP (items))
@@ -636,9 +636,7 @@
   /* Inhibit GC during this conversion.  The reasons for this are
      the same as in menu_item_descriptor_to_widget_value(); see
      the large comment above that function. */
-  record_unwind_protect (restore_gc_inhibit,
-			 make_int (gc_currently_forbidden));
-  gc_currently_forbidden = 1;
+  count = begin_gc_forbidden ();
 
   /* Also make sure that we free the partially-created widget_value
      tree on Lisp error. */
@@ -658,7 +656,7 @@
 
   /* No more need to free the half-filled-in structures. */
   set_opaque_ptr (wv_closure, 0);
-  unbind_to (count, Qnil);
+  unbind_to (count);
 
   return control;
 }