changeset 34039:88c42020e441

(xm_arm_callback): Handle case that W is null; also see comment there.
author Gerd Moellmann <gerd@gnu.org>
date Thu, 30 Nov 2000 12:50:08 +0000
parents 743849495725
children dbe2757d6cb8
files lwlib/lwlib-Xm.c
diffstat 1 files changed, 21 insertions(+), 15 deletions(-) [+]
line wrap: on
line diff
--- a/lwlib/lwlib-Xm.c	Thu Nov 30 12:41:39 2000 +0000
+++ b/lwlib/lwlib-Xm.c	Thu Nov 30 12:50:08 2000 +0000
@@ -265,26 +265,32 @@
   widget_value *wv = (widget_value *) client_data;
   widget_instance *instance;
 
-  /* Get the id of the menu bar or popup menu this widget is in.  */
-  while (1)
+  /* During the pretest of 21.1, there was a case where this callback
+     was called with a null widget on hpux 10.2.  I think that's
+     likely a bug in the Motif lib there.  */
+  if (w != None)
     {
-      if (XmIsRowColumn (w))
+      /* Get the id of the menu bar or popup menu this widget is in.  */
+      while (1)
 	{
-	  unsigned char type = 0xff;
+	  if (XmIsRowColumn (w))
+	    {
+	      unsigned char type = 0xff;
 
-	  XtVaGetValues (w, XmNrowColumnType, &type, NULL);
-	  if (type == XmMENU_BAR || type == XmMENU_POPUP)
-	    break;
+	      XtVaGetValues (w, XmNrowColumnType, &type, NULL);
+	      if (type == XmMENU_BAR || type == XmMENU_POPUP)
+		break;
+	    }
+
+	  w = XtParent (w);
 	}
 
-      w = XtParent (w);
-    }
-
-  instance = lw_get_widget_instance (w);
-  if (instance && instance->info->highlight_cb)
-    {
-      call_data = cbs->reason == XmCR_DISARM ? NULL : wv;
-      instance->info->highlight_cb (w, instance->info->id, call_data);
+      instance = lw_get_widget_instance (w);
+      if (instance && instance->info->highlight_cb)
+	{
+	  call_data = cbs->reason == XmCR_DISARM ? NULL : wv;
+	  instance->info->highlight_cb (w, instance->info->id, call_data);
+	}
     }
 }