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 [email protected] https://lists.sourceforge.net/lists/listinfo/iup-users
