From 48b76f86239f9fd0468a17fdb8d47188b64e2e64 Mon Sep 17 00:00:00 2001 From: Marcin Cieslak Date: Sun, 30 Sep 2012 00:16:33 +0200 Subject: [PATCH] dtcreate: Don't crash when clicking "Find Set..." dtcreate crashed on 64-bit system when clicking "Find Set.." button. Crash happens in libXm: new_w=0x805db4300, args=0x7fffffffb430, num_args=0x7fffffffb3dc) at Form.c:1955 $1 = {att = {{type = 4 '\004', w = 0x805db3700, percent = 0, offset = 0, value = 0, tempValue = 0}, {type = 1 '\001', w = 0x0, percent = 0, offset = 10, value = 0, tempValue = 0}, {type = 3 '\003', w = 0x805db3700, percent = 0, offset = 0, value = 0, tempValue = 0}, { type = 3 '\003', w = 0x800000000, percent = 0, offset = 10, value = 0, tempValue = 0}}, next_sibling = 0x0, sorted = 0 '\0', resizable = 1 '\001', preferred_width = 0, preferred_height = 0} (...) at icon_selection_dialog.c:1768 1767 /* Creation of icon_scrolled_win */ 1768 icon_scrolled_win = XtVaCreateManagedWidget( "icon_scrolled_win", 1769 xmScrolledWindowWidgetClass, 1770 icon_selection_dialog, 1771 XmNscrollingPolicy, XmAUTOMATIC, 1772 /* XmNnavigationType, XmTAB_GROUP, */ 1773 XmNx, 282, 1774 XmNy, 84, 1775 XmNscrollBarDisplayPolicy, XmAS_NEEDED, 1776 XmNrightOffset, 10, 1777 XmNrightAttachment, XmATTACH_FORM, 1778 XmNtopOffset, 0, 1779 XmNtopWidget, icon_container_label, 1780 XmNtopAttachment, XmATTACH_WIDGET, 1781 XmNleftOffset, 0, 1782 XmNleftWidget, icon_container_label, 1783 XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET, 1784 XmNbottomOffset, 10, 1785 XmNbottomWidget, XmATTACH_NONE, 1786 XmNbottomAttachment, XmATTACH_WIDGET, 1787 NULL ); What happens here is that ConstraintInitialize receives four constraints, the last one is this: { type = 3 '\003', /* XmATTACH_WIDGET */ w = 0x800000000, /* malformed XmATTACH_NONE ??? percent = 0, offset = 10, /* specified as XmNbottomOffset */ value = 0, tempValue = 0} XmATTACH_* values are defined in as follows: 505 enum{ XmATTACH_NONE, XmATTACH_FORM, 506 XmATTACH_OPPOSITE_FORM, XmATTACH_WIDGET, 507 XmATTACH_OPPOSITE_WIDGET, XmATTACH_POSITION, 508 XmATTACH_SELF 509 } ; What is not clear to why XmATTACH_NONE - which should be (int)0 - becomes 0x800000000 - looks like a 64 bit bug somewhere. Providing a long value on None (0L) as in this change fixes the problem. I understand is that it possible to use such an "empty" widget is to create additional space at the bottom of the newly created "icon_scrolled_win". What needs to be clarified - shouldn't be such an (int) value be automatically promoted to (long) (or XtArgVal, XtPointer, ...) and preserve the value 0? Lots of parameters seem to be passed as ints (for example dimensions) and they do not appear to cause any trouble. --- cde/programs/dtcreate/icon_selection_dialog.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cde/programs/dtcreate/icon_selection_dialog.c b/cde/programs/dtcreate/icon_selection_dialog.c index 67b48fc6..63a04cf3 100644 --- a/cde/programs/dtcreate/icon_selection_dialog.c +++ b/cde/programs/dtcreate/icon_selection_dialog.c @@ -1782,7 +1782,7 @@ static Widget _Uxbuild_icon_selection_dialog(void) XmNleftWidget, icon_container_label, XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET, XmNbottomOffset, 10, - XmNbottomWidget, XmATTACH_NONE, + XmNbottomWidget, None, XmNbottomAttachment, XmATTACH_WIDGET, NULL ); -- 2.25.1