From 76243e8769a0e7725a2628960e08ca2a3bc00883 Mon Sep 17 00:00:00 2001 From: kichik Date: Mon, 2 Jun 2003 14:26:15 +0000 Subject: [PATCH] Bug #747445 fixed - FileRequest "..." button does nothing on some State values git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@2604 212acab6-be3b-0410-9dea-997c60f758d6 --- Contrib/InstallOptions/InstallerOptions.cpp | 58 ++++++++++---------- Plugins/InstallOptions.dll | Bin 12800 -> 12800 bytes 2 files changed, 28 insertions(+), 30 deletions(-) diff --git a/Contrib/InstallOptions/InstallerOptions.cpp b/Contrib/InstallOptions/InstallerOptions.cpp index 91707936..26abfdd1 100644 --- a/Contrib/InstallOptions/InstallerOptions.cpp +++ b/Contrib/InstallOptions/InstallerOptions.cpp @@ -12,6 +12,7 @@ #include #include #include +#include #include "resource.h" #include "../exdll/exdll.h" @@ -28,8 +29,7 @@ void FREE(void *d) { if (d) GlobalFree((HGLOBAL)d); } char *STRDUP(const char *c) { char *t=(char*)MALLOC(lstrlen(c)+1); - lstrcpy(t,c); - return t; + return lstrcpy(t,c); } @@ -179,24 +179,20 @@ bool BrowseForFile(int nControlIdx) { GetWindowText(hControl, ofn.lpstrFile, MAX_PATH); - //for(;;) { - if (pThisField->bSaveDlg) { - bResult = GetSaveFileName(&ofn); - } else { - bResult = GetOpenFileName(&ofn); - } - if (bResult) { - SetWindowText(hControl, ofn.lpstrFile); - return true; - } - // check this because the dialog will sometimes return this error just because a directory is specified - // instead of a filename. in this case, try it without the initial filename and see if that works. -// if (*(ofn.lpstrFile)) { //&& (CommDlgExtendedError() == FNERR_INVALIDFILENAME)) { - // *(ofn.lpstrFile) = '\0'; - // } else { - //break; - // } - //} +tryagain: + if (pThisField->bSaveDlg) { + bResult = GetSaveFileName(&ofn); + } else { + bResult = GetOpenFileName(&ofn); + } + if (bResult) { + SetWindowText(hControl, ofn.lpstrFile); + return true; + } + else if (ofn.lpstrFile[0] && CommDlgExtendedError() == FNERR_INVALIDFILENAME) { + ofn.lpstrFile[0] = '\0'; + goto tryagain; + } return false; } @@ -1038,17 +1034,19 @@ void showCfgDlg() FREE(pszCancelButtonText); FREE(pszNextButtonText); FREE(pszBackButtonText); - for (nIdx = 0; nIdx < nNumFields; nIdx++) { - FREE(pFields[nIdx].pszText); - FREE(pFields[nIdx].pszState); - FREE(pFields[nIdx].pszListItems); - FREE(pFields[nIdx].pszFilter); - FREE(pFields[nIdx].pszRoot); - if (pFields[nIdx].nType == FIELD_BITMAP) { - DeleteObject(pFields[nIdx].hImage); + + int i = nNumFields; + while (i--) { + FREE(pFields[i].pszText); + FREE(pFields[i].pszState); + FREE(pFields[i].pszListItems); + FREE(pFields[i].pszFilter); + FREE(pFields[i].pszRoot); + if (pFields[i].nType == FIELD_BITMAP) { + DeleteObject(pFields[i].hImage); } - if (pFields[nIdx].nType == FIELD_ICON) { - DestroyIcon((HICON)pFields[nIdx].hImage); + if (pFields[i].nType == FIELD_ICON) { + DestroyIcon((HICON)pFields[i].hImage); } } FREE(pFields); diff --git a/Plugins/InstallOptions.dll b/Plugins/InstallOptions.dll index dedae72cec84d561c65dba6d64d0d4370a545763..ccf44f4ff3e14f5a26047576cf4726727b0f40dc 100644 GIT binary patch delta 2412 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 T0u>$>N`!KuA>h34UCX}!icb>s