Better fix of crash on empty game list
authorH.G. Muller <h.g.muller@hccnet.nl>
Fri, 5 Aug 2011 20:39:41 +0000 (22:39 +0200)
committerH.G. Muller <h.g.muller@hccnet.nl>
Sat, 6 Aug 2011 16:40:53 +0000 (18:40 +0200)
An empty list is now replaced by a list containig a simple message.

xgamelist.c

index e1781dc..06ebf4a 100644 (file)
@@ -109,6 +109,8 @@ char gameListTranslations[] =
 char filterTranslations[] =
   "<Key>Return: SetFilterProc() \n";
 
 char filterTranslations[] =
   "<Key>Return: SetFilterProc() \n";
 
+char *dummyList[] = { N_("no games matched your request"), NULL };
+
 typedef struct {
     Widget shell;
     Position x, y;
 typedef struct {
     Widget shell;
     Position x, y;
@@ -367,7 +369,7 @@ GameListReplace()
   char buf[MSG_SIZ],*p;
 
   listwidg = XtNameToWidget(glc->shell, "*form.viewport.list");
   char buf[MSG_SIZ],*p;
 
   listwidg = XtNameToWidget(glc->shell, "*form.viewport.list");
-  XtSetArg(arg, XtNlist, glc->strings);
+  XtSetArg(arg, XtNlist, listLength ? glc->strings : dummyList); // empty list displays message
   XawListChange(listwidg, glc->strings, 0, 0, True);
   XtSetValues(listwidg, &arg, 1);
   XawListHighlight(listwidg, 0);
   XawListChange(listwidg, glc->strings, 0, 0, True);
   XtSetValues(listwidg, &arg, 1);
   XawListHighlight(listwidg, 0);
@@ -431,7 +433,7 @@ GameListCallback(w, client_data, call_data)
        XtGetValues(filterText, args, j);
         safeStrCpy(filterString, text, sizeof(filterString)/sizeof(filterString[0]));
        XawListHighlight(listwidg, 0);
        XtGetValues(filterText, args, j);
         safeStrCpy(filterString, text, sizeof(filterString)/sizeof(filterString[0]));
        XawListHighlight(listwidg, 0);
-        if(GameListPrepare(strcmp(name, _("find position")) == 0)) GameListReplace(); // crashes on empty list...
+        GameListPrepare(strcmp(name, _("find position")) == 0); GameListReplace();
         return;
     }
 #if 1
         return;
     }
 #if 1
@@ -576,7 +578,7 @@ SetFilterProc(w, event, prms, nprms)
         XtSetArg(args[j], XtNstring, &name);  j++;
        XtGetValues(filterText, args, j);
         safeStrCpy(filterString, name, sizeof(filterString)/sizeof(filterString[0]));
         XtSetArg(args[j], XtNstring, &name);  j++;
        XtGetValues(filterText, args, j);
         safeStrCpy(filterString, name, sizeof(filterString)/sizeof(filterString[0]));
-        if(GameListPrepare(False)) GameListReplace(); // crashes on empty list...
+        GameListPrepare(False); GameListReplace();
        list = XtNameToWidget(glc->shell, "*form.viewport.list");
        XawListHighlight(list, 0);
         j = 0;
        list = XtNameToWidget(glc->shell, "*form.viewport.list");
        XawListHighlight(list, 0);
         j = 0;