[PATCH 03/12] msvcp110: Add tr2_sys__Open_dir implementation.(resend)
Piotr Caban
piotr.caban at gmail.com
Mon Sep 28 06:51:46 CDT 2015
Hi,
On 09/07/15 16:21, YongHao Hu wrote:
> +/* ?_Open_dir at sys@tr2 at std@@YAPAXAAY0BAE at DPBDAAHAAW4file_type@123@@Z */
> +/* ?_Open_dir at sys@tr2 at std@@YAPEAXAEAY0BAE at DPEBDAEAHAEAW4file_type@123@@Z */
> +void* __cdecl tr2_sys__Open_dir(char* target, char const* dest, int* err_code, enum file_type* type)
> +{
> + HANDLE handle;
> + WIN32_FIND_DATAA data;
> + char temppath[MAX_PATH];
> + TRACE("(%s %s %p %p)\n", debugstr_a(target), debugstr_a(dest), err_code, type);
> + strcpy(temppath, dest);
> + strcat(temppath, "\\*.*");
Is native limiting the path to MAX_PATH characters? What happens if
longer path is passed?
> + handle = FindFirstFileA(temppath, &data);
> + if(handle == INVALID_HANDLE_VALUE) {
> + if(GetLastError() == ERROR_PATH_NOT_FOUND)
> + *err_code = ERROR_BAD_PATHNAME;
> + else
> + *err_code = GetLastError();
This doesn't look right. Probably some other function is returning
different error on windows and on wine (or different function is used
internally). Anyway I don't think we need to be compatible here (at
least as long as there's no application that depends on it).
> + while(!strcmp(data.cFileName, ".") || !strcmp(data.cFileName, "..")) {
> + if(!FindNextFileA(handle, &data)) {
> + *err_code = ERROR_SUCCESS;
> + *type = status_unknown;
> + return NULL;
You're leaking handle here.
Thanks,
Piotr
More information about the wine-devel
mailing list