Hi, Multiple fixes in iupwin_newfiledlg.c: --- ..\..\a\srcfiledlg\iupwin_newfiledlg.cpp Fri Sep 14 17:33:33 2018 +++ iupwin_newfiledlg.cpp Sat May 25 10:43:31 2019 @@ -334,48 +334,25 @@ COMDLG_FILTERSPEC* filters = (COMDLG_FILTERSPEC*)malloc((buffSize)*sizeof(COMDLG_FILTERSPEC)); /* replace symbols "|" by terminator "\0" */ - - while (*name) + if (name && *name) { - char *filter; - filter = name; - while (*filter) - { - if (*filter == '|') - { - *filter = 0; - filters[i].pszName = iupwinStrToSystem(name); - break; - } - filter++; - } - - if (!filter) - break; - - name = ++filter; - - while (*filter) + char *filter = name; + while (filter && *filter) { if (*filter == '|') { - *filter = 0; - filters[i].pszSpec = iupwinStrToSystem(name); - break; + *filter = '\0'; + filters[i].pszName = iupwinStrToSystem(name); } - filter++; + ++filter; + ++i; + if (i == 50) + break; } - if (!filter) - break; - - i++; + break; name = ++filter; - - if (i == 50) - break; } - *size = i; return filters; } @@ -646,8 +623,8 @@ si = winNewFileDlgParseName(wdir); if (si) hr = pfd->SetFolder(si); - free(directory); } + free(directory); value = iupAttribGet(ih, "TITLE"); if (value) @@ -695,13 +672,8 @@ dir_len = 0; iupAttribSetStrId(ih, "MULTIVALUE", 1, filename + dir_len); - iupAttribSetStr(ih, "VALUE", filename); /* here value is not separated by '|' */ - iupAttribSetInt(ih, "MULTIVALUECOUNT", 2); - free(dir); - CoTaskMemFree(pszFilePath); - if (winIsFile(pszFilePath)) /* check if file exists */ { iupAttribSet(ih, "FILEEXIST", "YES"); @@ -712,6 +684,8 @@ iupAttribSet(ih, "FILEEXIST", "NO"); iupAttribSet(ih, "STATUS", "1"); } + free(dir); + CoTaskMemFree(pszFilePath); } else iupAttribSet(ih, "STATUS", "-1"); @@ -719,7 +693,7 @@ psiResult->Release(); } } - else + else if (opfd != NULL) { IShellItemArray *psiaResult; @@ -798,8 +772,8 @@ char *fname = iupStrFileGetTitle(filename); sprintf(nameid, "MULTIVALUE%d", i + 1); iupAttribSetStrf(ih, nameid, "%s%s", dir, fname); - iupAttribSetStrf(ih, "VALUE", "%s%s|", value, iupAttribGetId(ih, "MULTIVALUE", i + 1)); + free(fname); } else {
Best regards, Ranier Vilela
iupwin_newfiledlg.cpp.patch
Description: iupwin_newfiledlg.cpp.patch
_______________________________________________ Iup-users mailing list Iup-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/iup-users