This is another problem with mishandled strings.  This time the
problem can arise any time you set a label string, whether or
not the strings have the same content.  The changes on the end 
are to fix compiler warnings about unreachable code.

- Steve


*** lesstif-0.91.3/lib/Xm/MessageB.c.orig       Sat Aug 14 08:17:13 1999
--- lesstif-0.91.3/lib/Xm/MessageB.c    Thu Jul 20 13:23:46 2000
***************
*** 531,536 ****
--- 531,548 ----
      {
        XmStringFree(MB_MessageString(w));
      }
+     if (MB_HelpLabelString(w))
+     {
+         XmStringFree(MB_HelpLabelString(w));
+     }
+     if (MB_CancelLabelString(w))
+     {
+         XmStringFree(MB_CancelLabelString(w));
+     }
+     if (MB_OKLabelString(w))
+     {
+         XmStringFree(MB_OKLabelString(w));
+     }
  }
  
  static void
***************
*** 850,892 ****
      }
  
      if (MB_HelpButton(new_w) &&
!       MB_HelpLabelString(new_w) != MB_HelpLabelString(old) && /* Fast */
!       !XmStringCompare(MB_HelpLabelString(new_w), MB_HelpLabelString(old)))
      {
!       Arg al[2];
! 
!       XtSetArg(al[0], XmNlabelString, MB_HelpLabelString(new_w));
!       XtSetArg(al[1], XmNlabelType, XmSTRING);
!       XtSetValues(MB_HelpButton(new_w), al, 2);
! 
!       refresh_needed = True;
      }
  
      if (BB_CancelButton(new_w) &&
!       MB_CancelLabelString(new_w) != MB_CancelLabelString(old) && /* Fast */
!       !XmStringCompare(MB_CancelLabelString(new_w),
!                        MB_CancelLabelString(old)))
      {
!       Arg al[2];
! 
!       XtSetArg(al[0], XmNlabelString, MB_CancelLabelString(new_w));
!       XtSetArg(al[1], XmNlabelType, XmSTRING);
!       XtSetValues(BB_CancelButton(new_w), al, 2);
! 
!       refresh_needed = True;
      }
  
      if (MB_OKButton(new_w) &&
!       MB_OKLabelString(new_w) != MB_OKLabelString(old) && /* Fast */
!       !XmStringCompare(MB_OKLabelString(new_w), MB_OKLabelString(old)))
      {
!       Arg al[2];
! 
!       XtSetArg(al[0], XmNlabelString, MB_OKLabelString(new_w));
!       XtSetArg(al[1], XmNlabelType, XmSTRING);
!       XtSetValues(MB_OKButton(new_w), al, 2);
! 
!       refresh_needed = True;
      }
  
      return refresh_needed;
--- 862,916 ----
      }
  
      if (MB_HelpButton(new_w) &&
!       MB_HelpLabelString(new_w) != MB_HelpLabelString(old))
      {
!         if (!XmStringCompare(MB_HelpLabelString(new_w), MB_HelpLabelString(old)))
!         {
!             Arg al[2];
! 
!             XtSetArg(al[0], XmNlabelString, MB_HelpLabelString(new_w));
!             XtSetArg(al[1], XmNlabelType, XmSTRING);
!             XtSetValues(MB_HelpButton(new_w), al, 2);
! 
!             refresh_needed = True;
!         }
!         MB_HelpLabelString(new_w) = XmStringCopy(MB_HelpLabelString(new_w));
!         XmStringFree(MB_HelpLabelString(old));
      }
  
      if (BB_CancelButton(new_w) &&
!       MB_CancelLabelString(new_w) != MB_CancelLabelString(old))
      {
!       if (!XmStringCompare(MB_CancelLabelString(new_w),
!                              MB_CancelLabelString(old)))
!         {
!             Arg al[2];
! 
!             XtSetArg(al[0], XmNlabelString, MB_CancelLabelString(new_w));
!             XtSetArg(al[1], XmNlabelType, XmSTRING);
!             XtSetValues(BB_CancelButton(new_w), al, 2);
! 
!             refresh_needed = True;
!         }
!         MB_CancelLabelString(new_w) = XmStringCopy(MB_CancelLabelString(new_w));
!         XmStringFree(MB_CancelLabelString(old));
      }
  
      if (MB_OKButton(new_w) &&
!       MB_OKLabelString(new_w) != MB_OKLabelString(old))
      {
!         if (!XmStringCompare(MB_OKLabelString(new_w), MB_OKLabelString(old)))
!         {
!             Arg al[2];
! 
!             XtSetArg(al[0], XmNlabelString, MB_OKLabelString(new_w));
!             XtSetArg(al[1], XmNlabelType, XmSTRING);
!             XtSetValues(MB_OKButton(new_w), al, 2);
! 
!             refresh_needed = True;
!         }
!         MB_OKLabelString(new_w) = XmStringCopy(MB_OKLabelString(new_w));
!         XmStringFree(MB_OKLabelString(old));
      }
  
      return refresh_needed;
***************
*** 1633,1663 ****
      {
      case XmDIALOG_CANCEL_BUTTON:
        return BB_CancelButton(mb);
-       break;
  
      case XmDIALOG_DEFAULT_BUTTON:
        return BB_DefaultButton(mb);
-       break;
  
      case XmDIALOG_HELP_BUTTON:
        return MB_HelpButton(mb);
-       break;
  
      case XmDIALOG_MESSAGE_LABEL:
        return MB_Message(mb);
-       break;
  
      case XmDIALOG_OK_BUTTON:
        return MB_OKButton(mb);
-       break;
  
      case XmDIALOG_SEPARATOR:
        return MB_Separator(mb);
-       break;
  
      case XmDIALOG_SYMBOL_LABEL:
        return MB_Symbol(mb);
-       break;
  
      default:
        /* invalid child */
--- 1657,1680 ----



--== Sent via Deja.com http://www.deja.com/ ==--
Before you buy.

Reply via email to