diff --git a/dlls/setupapi/fakedll.c b/dlls/setupapi/fakedll.c index 3b5a47cd34b..ade675455af 100644 --- a/dlls/setupapi/fakedll.c +++ b/dlls/setupapi/fakedll.c @@ -630,5 +630,6 @@ void cleanup_fake_dlls(void) HeapFree( GetProcessHeap(), 0, file_buffer ); file_buffer = NULL; HeapFree( GetProcessHeap(), 0, handled_dlls ); + handled_dlls = NULL; handled_count = handled_total = 0; } diff --git a/dlls/setupapi/install.c b/dlls/setupapi/install.c index cb476af52b1..354f10571dc 100644 --- a/dlls/setupapi/install.c +++ b/dlls/setupapi/install.c @@ -713,7 +713,6 @@ static BOOL fake_dlls_callback( HINF hinf, PCWSTR field, void *arg ) HeapFree( GetProcessHeap(), 0, path ); if (!ret) break; } - cleanup_fake_dlls(); return ret; } @@ -1095,7 +1094,9 @@ BOOL WINAPI SetupInstallFromInfSectionW( HWND owner, HINF hinf, PCWSTR section, } else info.callback = NULL; - if (!iterate_section_fields( hinf, section, WineFakeDlls, fake_dlls_callback, NULL )) + if (iterate_section_fields( hinf, section, WineFakeDlls, fake_dlls_callback, NULL )) + cleanup_fake_dlls(); + else return FALSE; if (!iterate_section_fields( hinf, section, RegisterDlls, register_dlls_callback, &info ))