bugfix: segfault when invalid option argument was given (bug #27427)
authorArun Persaud <arun@nubati.net>
Tue, 6 Oct 2009 04:01:32 +0000 (21:01 -0700)
committerArun Persaud <arun@nubati.net>
Tue, 6 Oct 2009 04:01:32 +0000 (21:01 -0700)
when given a wrong argument to an option (e.g. -tc 0) xboard aborts before setting up the window, but tried to write a message to the messageWidget which doesn't exist at that point.

xboard.c

index 0e8b132..e8b561d 100644 (file)
--- a/xboard.c
+++ b/xboard.c
@@ -7641,19 +7641,34 @@ void Iconify(w, event, prms, nprms)
 void DisplayMessage(message, extMessage)
      char *message, *extMessage;
 {
 void DisplayMessage(message, extMessage)
      char *message, *extMessage;
 {
-    char buf[MSG_SIZ];
-    Arg arg;
-
-    if (extMessage) {
-       if (*message) {
-           snprintf(buf, sizeof(buf), "%s  %s", message, extMessage);
-           message = buf;
-       } else {
-           message = extMessage;
-       }
-    }
-    XtSetArg(arg, XtNlabel, message);
-    XtSetValues(messageWidget, &arg, 1);
+  /* display a message in the message widget */
+  
+  char buf[MSG_SIZ];
+  Arg arg;
+  
+  if (extMessage) 
+    {
+      if (*message) 
+       {
+         snprintf(buf, sizeof(buf), "%s  %s", message, extMessage);
+         message = buf;
+       } 
+      else 
+       {
+         message = extMessage;
+       };
+    };
+  
+  /* need to test if messageWidget already exists, since this function
+     can also be called during the startup, if for example a Xresource
+     is not set up correctly */
+  if(messageWidget)
+    {
+      XtSetArg(arg, XtNlabel, message);
+      XtSetValues(messageWidget, &arg, 1);
+    };
+  
+  return;
 }
 
 void DisplayTitle(text)
 }
 
 void DisplayTitle(text)