ken@richsun.UUCP (Ken Marks) (03/30/89)
VERSION: R3 CLIENT MACHINE and OPERATING SYSTEM: any DISPLAY: any WINDOW MANAGER: any AREA: lib/Xt/Geometry.c SYNOPSIS: In XtConfigureWidget(), a check is made to make sure the widget is realized before calling XConfigureWindow(). This check needs to be extended to the call to the widget's resize procedure. It looks as though this second call might have been added later and the braces were left out. DESCRIPTION: See SYNOPSIS REPEAT BY: Call XtConfigureWidget() with a different height or width than the widget was created with. Do this before the widget is realized and the client will get a protocol error when the widget's resize routine tries to use its yet undefined window id. The circumstances we found it occuring is while realizing a composite widget which calls XtConfigureWidget() on it's children before the children get a change to get realized. SAMPLE FIX: *** Geometry.c.old Thu Mar 30 07:39:53 1989 --- Geometry.c Thu Mar 30 07:41:08 1989 *************** *** 267,277 **** } if (mask != 0) { ! if (XtIsRealized(w)) XConfigureWindow(XtDisplay(w), XtWindow(w), mask, &changes); ! if ((mask & (CWWidth | CWHeight)) && ! XtClass(w)->core_class.resize != (XtWidgetProc) NULL) ! (*(w->core.widget_class->core_class.resize))(w); } } /* XtConfigureWidget */ --- 267,278 ---- } if (mask != 0) { ! if (XtIsRealized(w)) { XConfigureWindow(XtDisplay(w), XtWindow(w), mask, &changes); ! if ((mask & (CWWidth | CWHeight)) && ! XtClass(w)->core_class.resize != (XtWidgetProc) NULL) ! (*(w->core.widget_class->core_class.resize))(w); ! } } } /* XtConfigureWidget */