update.
[chise/xemacs-chise.git.1] / src / scrollbar-x.c
index 7034321..b7b193b 100644 (file)
@@ -23,6 +23,8 @@ Boston, MA 02111-1307, USA.  */
 
 /* Synched up with: Not in FSF. */
 
+/* This file Mule-ized (more like Mule-verified) by Ben Wing, 7-8-00. */
+
 #include <config.h>
 #include "lisp.h"
 
@@ -69,19 +71,21 @@ x_inhibit_scrollbar_slider_size_change (void)
 static void
 x_free_scrollbar_instance (struct scrollbar_instance *instance)
 {
-  if (SCROLLBAR_X_NAME (instance))
-    xfree (SCROLLBAR_X_NAME (instance));
-
-  if (SCROLLBAR_X_WIDGET (instance))
+  if (instance->scrollbar_data)
     {
-      if (XtIsManaged (SCROLLBAR_X_WIDGET (instance)))
-       XtUnmanageChild (SCROLLBAR_X_WIDGET (instance));
+      if (SCROLLBAR_X_NAME (instance))
+       xfree (SCROLLBAR_X_NAME (instance));
 
-      lw_destroy_all_widgets (SCROLLBAR_X_ID (instance));
-    }
+      if (SCROLLBAR_X_WIDGET (instance))
+       {
+         if (XtIsManaged (SCROLLBAR_X_WIDGET (instance)))
+           XtUnmanageChild (SCROLLBAR_X_WIDGET (instance));
 
-  if (instance->scrollbar_data)
-    xfree (instance->scrollbar_data);
+         lw_destroy_all_widgets (SCROLLBAR_X_ID (instance));
+       }
+
+      xfree (instance->scrollbar_data);
+    }
 }
 
 /* A device method. */
@@ -215,6 +219,7 @@ scrollbar_instance_to_widget_value (struct scrollbar_instance *instance)
   wv->scrollbar_data = xnew (scrollbar_values);
 
   wv->name = SCROLLBAR_X_NAME (instance);
+  wv->name = xstrdup (wv->name);
   wv->value = 0;
   wv->key = 0;
   wv->enabled = instance->scrollbar_is_active;
@@ -277,10 +282,8 @@ x_update_scrollbar_instance_status (struct window *w, int active, int size,
            }
        }
 
-      if (!wv->scrollbar_data) abort ();
-      xfree (wv->scrollbar_data);
-      wv->scrollbar_data = 0;
-      free_widget_value (wv);
+      if (!wv->scrollbar_data) ABORT ();
+      free_widget_value_tree (wv);
     }
   else if (managed)
     {
@@ -365,7 +368,7 @@ x_scrollbar_loop (enum x_scrollbar_loop type, Lisp_Object window,
                }
              break;
            default:
-             abort ();
+             ABORT ();
            }
        }
 
@@ -407,6 +410,9 @@ x_update_vertical_scrollbar_callback (Widget widget, LWLIB_ID id,
     return;
 
   mirror = find_scrollbar_window_mirror (f, id);
+  if (!mirror)
+    return;
+
   win = real_window (mirror, 1);
 
   if (NILP (win))
@@ -610,6 +616,9 @@ x_update_horizontal_scrollbar_callback (Widget widget, LWLIB_ID id,
     return;
 
   mirror = find_scrollbar_window_mirror (f, id);
+  if (!mirror)
+    return;
+
   win = real_window (mirror, 1);
 
   if (NILP (win))
@@ -678,13 +687,13 @@ x_scrollbar_pointer_changed_in_window (struct window *w)
 void
 x_update_frame_scrollbars (struct frame *f)
 {
-  /* Consider this code to be "in_display" so that we abort() if Fsignal()
+  /* Consider this code to be "in_display" so that we ABORT() if Fsignal()
      gets called. */
   in_display++;
   x_scrollbar_loop (X_UPDATE_FRAME_SCROLLBARS, f->root_window, f->root_mirror,
                    0, (Window) NULL);
   in_display--;
-  if (in_display < 0) abort ();
+  if (in_display < 0) ABORT ();
 }
 
 #ifdef MEMORY_USAGE_STATS