James Hawkins : version: Return ERROR_RESOURCE_DATA_NOT_FOUND if the file does not have version information .

Alexandre Julliard julliard at winehq.org
Tue Feb 5 06:33:50 CST 2008


Module: wine
Branch: master
Commit: 972c61d31146b1e7938a32fd4ed23058ecaa5b1f
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=972c61d31146b1e7938a32fd4ed23058ecaa5b1f

Author: James Hawkins <truiken at gmail.com>
Date:   Mon Feb  4 11:21:05 2008 -0600

version: Return ERROR_RESOURCE_DATA_NOT_FOUND if the file does not have version information.

---

 dlls/version/info.c       |    4 ++++
 dlls/version/tests/info.c |   25 +++++++++++++++++++++++++
 2 files changed, 29 insertions(+), 0 deletions(-)

diff --git a/dlls/version/info.c b/dlls/version/info.c
index 935d0c1..2be1df7 100644
--- a/dlls/version/info.c
+++ b/dlls/version/info.c
@@ -252,6 +252,10 @@ static DWORD VERSION_GetFileVersionInfo_PE( LPCWSTR filename, DWORD datasize, LP
     if(!hModule)
     {
 	WARN("Could not load %s\n", debugstr_w(filename));
+
+	if (GetLastError() == ERROR_BAD_EXE_FORMAT)
+	    return 0xFFFFFFFF;
+
 	return 0;
     }
     hRsrc = FindResourceW(hModule,
diff --git a/dlls/version/tests/info.c b/dlls/version/tests/info.c
index be1852f..d31797a 100644
--- a/dlls/version/tests/info.c
+++ b/dlls/version/tests/info.c
@@ -44,6 +44,18 @@
 	"ERROR_PATH_NOT_FOUND (NT4)/ERROR_FILE_NOT_FOUND (2k3)" \
 	"expected, got %u\n", GetLastError());
 
+static void create_file(const CHAR *name)
+{
+    HANDLE file;
+    DWORD written;
+
+    file = CreateFileA(name, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, NULL);
+    ok(file != INVALID_HANDLE_VALUE, "Failure to open file %s\n", name);
+    WriteFile(file, name, strlen(name), &written, NULL);
+    WriteFile(file, "\n", strlen("\n"), &written, NULL);
+    CloseHandle(file);
+}
+
 static void test_info_size(void)
 {   DWORD hdl, retval;
     char mypath[MAX_PATH] = "";
@@ -153,6 +165,19 @@ static void test_info_size(void)
     }
     else
 	trace("skipping GetModuleFileNameA(NULL,..) failed\n");
+
+    create_file("test.txt");
+
+    /* no version info */
+    SetLastError(0xdeadbeef);
+    hdl = 0xcafe;
+    retval = GetFileVersionInfoSizeA("test.txt", &hdl);
+    ok(retval == 0, "Expected 0, got %d\n", retval);
+    ok(hdl == 0, "Expected 0, got %d\n", hdl);
+    ok(GetLastError() == ERROR_RESOURCE_DATA_NOT_FOUND,
+       "Expected ERROR_RESOURCE_DATA_NOT_FOUND, got %d\n", GetLastError());
+
+    DeleteFileA("test.txt");
 }
 
 static void VersionDwordLong2String(DWORDLONG Version, LPSTR lpszVerString)




More information about the wine-cvs mailing list