Fixed and committed to the SVN. Thanks for reporting.

Best,
Scuri


Em sáb, 25 de mai de 2019 às 10:45, Ranier VF <ranier_...@hotmail.com>
escreveu:

> 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_______________________________________________
> Iup-users mailing list
> Iup-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/iup-users
>
_______________________________________________
Iup-users mailing list
Iup-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/iup-users

Reply via email to