[resend] shell32 tests

Rolf Kalbermatter rolf.kalbermatter at citeng.com
Fri Dec 3 18:19:27 CST 2004


>+static HMODULE hshell32;
>+static int (WINAPI *pSHCreateDirectoryExA)(HWND, LPCSTR, LPSECURITY_ATTRIBUTES);
>+
>+static void InitFunctionPointers(void)
>+{
>+    hshell32 = GetModuleHandleA("shell32.dll");
>+
>+    if(hshell32)
>+	pSHCreateDirectoryExA = (void*)GetProcAddress(hshell32, "SHCreateDirectoryExA");
>+}
>+
> /* creates a file with the specified name for tests */
> void createTestFile(CHAR *name)
> {
>@@ -398,17 +409,19 @@
>     int ret;
> 
>     set_curr_dir_path(path, "testdir2\\test4.txt\0");
>-    ret = SHCreateDirectoryExA(NULL, path, NULL);
>+    ret = pSHCreateDirectoryExA(NULL, path, NULL);

I think this is not right. Implementing dynamic loading of functions in tests is
supposedly because that function may not be available on some systems. But here you
invoke the (maybe uninitialized, or NULL assigned) function pointer nevertheless
without protecting for this.

As such your patch does only allow loading the test on such systems but will
create a nice crash when run.

Rolf Kalbermatter
 





More information about the wine-devel mailing list