X-Git-Url: http://winboard.nl/cgi-bin?a=blobdiff_plain;f=xoptions.c;h=3ea11955a0503f9eb3c5068adbf26f887e4151dd;hb=5bcaf4baecc46eda033c3b86f753a4d85d1bcfec;hp=240818489bb8d1e070e1752bf2df2d9b138525f0;hpb=eae7684295f1bd6a48e793a9d0e93f1ad6d6c573;p=xboard.git diff --git a/xoptions.c b/xoptions.c index 2408184..3ea1195 100644 --- a/xoptions.c +++ b/xoptions.c @@ -698,11 +698,11 @@ void CreateComboPopup(parent, name, n, mb) parent, NULL, 0); j = 0; XtSetArg(args[j], XtNwidth, 100); j++; - XtSetArg(args[j], XtNlabel, _(mb[i])); j++; // XtSetArg(args[j], XtNright, XtChainRight); j++; while (mb[i] != NULL) { + XtSetArg(args[j], XtNlabel, _(mb[i])); entry = XtCreateManagedWidget(mb[i], smeBSBObjectClass, - menu, args, j); + menu, args, j+1); XtAddCallback(entry, XtNcallback, (XtCallbackProc) ComboSelect, (caddr_t)(intptr_t) (256*n+i)); @@ -775,7 +775,7 @@ void GenericPopDown(w, event, prms, nprms) PopDown(prms[0][0] - '0'); } -char *engineName, *engineDir, *engineChoice, *engineLine; +char *engineName, *engineDir, *engineChoice, *engineLine, *nickName, *params; Boolean isUCI, hasBook, storeVariant, v1, addToList; extern Option installOptions[], matchOptions[]; char *engineNr[] = { N_("First Engine"), N_("Second Engine"), NULL }; @@ -1243,7 +1243,10 @@ void GenericReadout(int selected) if(currentCps) { snprintf(buf, MSG_SIZ, "option %s=%s\n", currentOption[i].name, val); SendToProgram(buf, currentCps); - } else *dest = currentOption[i].name + 100; // option gets to point to private storage; + } else { + if(*dest) free(*dest); + *dest = malloc(strlen(val)+1); + } safeStrCpy(*dest, val, MSG_SIZ - (*dest - currentOption[i].name)); // copy text there } break; @@ -1857,9 +1860,9 @@ void SaveChanges(int n) } Option commentOptions[] = { -{ 0xD, 200, 300, NULL, (void*) &commentText, "", NULL, TextBox, "" }, -{ 0, 0, 0, NULL, (void*) &ClearComment, NULL, NULL, Button, "clear" }, -{ 0, 1, 0, NULL, (void*) &SaveChanges, NULL, NULL, Button, "save changes" }, +{ 0xD, 200, 250, NULL, (void*) &commentText, "", NULL, TextBox, "" }, +{ 0, 0, 50, NULL, (void*) &ClearComment, NULL, NULL, Button, "clear" }, +{ 0, 1, 100, NULL, (void*) &SaveChanges, NULL, NULL, Button, "save changes" }, { 0, 1, 0, NULL, (void*) &NewComCallback, "", NULL, EndMark , "" } }; @@ -1880,7 +1883,7 @@ void NewCommentPopup(char *title, char *text, int index) XtSetArg(args[0], XtNstring, text); XtSetValues(commentOptions[0].handle, args, 1); } - commentText = text; + if(commentText) free(commentText); commentText = strdup(text); commentIndex = index; MarkMenu("menuView.Show Comments", 1); if(GenericPopUp(commentOptions, title, 1)) @@ -1904,8 +1907,8 @@ void changeTags(int n) Option tagsOptions[] = { { 0, 0, 0, NULL, NULL, NULL, NULL, Label, "" }, -{ 0xD, 200, 250, NULL, (void*) &tagsText, "", NULL, TextBox, "" }, -{ 0, 0, 0, NULL, (void*) &changeTags, NULL, NULL, Button, "save changes" }, +{ 0xD, 200, 200, NULL, (void*) &tagsText, "", NULL, TextBox, "" }, +{ 0, 0, 100, NULL, (void*) &changeTags, NULL, NULL, Button, "save changes" }, { 0, 1, 0, NULL, (void*) &NewTagsCallback, "", NULL, EndMark , "" } }; @@ -1918,7 +1921,7 @@ void NewTagsPopup(char *text, char *msg) XtSetArg(args[0], XtNstring, text); XtSetValues(tagsOptions[1].handle, args, 1); } - tagsText = text; + if(tagsText) free(tagsText); tagsText = strdup(text); tagsOptions[0].textValue = msg; MarkMenu("menuView.Show Tags", 2); GenericPopUp(tagsOptions, _("Tags"), 2); @@ -2055,9 +2058,11 @@ void LoadEngineProc(w, event, prms, nprms) Cardinal *nprms; { isUCI = addToList = storeVariant = v1 = False; hasBook = True; // defaults - engineDir = nickName = ""; if(engineChoice) free(engineChoice); engineChoice = strdup(engineNr[0]); if(engineLine) free(engineLine); engineLine = strdup(""); + if(engineDir) free(engineDir); engineDir = strdup(""); + if(nickName) free(nickName); nickName = strdup(""); + if(params) free(params); params = strdup(""); NamesToList(firstChessProgramNames, engineList, engineMnemonic); GenericPopUp(installOptions, _("Load engine"), 0); }