Austin English schrieb:
On Thu, Dec 18, 2008 at 4:22 PM, Rico Schüller <[email protected]> wrote:
Hi,
could anyone try the attached patch for the qedit test on a windows machine?
It works around bug 16548. But according to the comment in the source I
think this could be a mistake. I'd like to know if it works without renaming
the file on windows. On wine it works.

Cheers
Rico

diff --git a/dlls/qedit/tests/mediadet.c b/dlls/qedit/tests/mediadet.c
index 2b43124..558ff3a 100644
--- a/dlls/qedit/tests/mediadet.c
+++ b/dlls/qedit/tests/mediadet.c
@@ -68,8 +68,10 @@ static BOOL unpack_avi_file(int id, WCHAR name[MAX_PATH])
        return FALSE;

    DeleteFileW(name);
+/*
+    Renaming isn't a good way to solve this, see bug 16548.
    lstrcpyW(name + lstrlenW(name) - 3, avi);
-
+*/
    fh = CreateFileW(name, GENERIC_WRITE, 0, NULL, CREATE_NEW,
                     FILE_ATTRIBUTE_NORMAL, NULL);
    if (fh == INVALID_HANDLE_VALUE)





Tested on XP SP 3:

-Original-
C:\Documents and Settings\Austin\Desktop>qedit_crosstest.exe
mediadet: 62 tests executed (0 marked as todo, 0 failures), 0 skipped.

-Your patch-
C:\Documents and Settings\Austinl\Desktop>qedit_crosstest_new.exe
mediadet.c:303: Tests skipped: Couldn't initialize tests!
mediadet: 0 tests executed (0 marked as todo, 0 failures), 1 skipped.

Thanks for your test.
I checked this on 3 different XP machines and all run the tests with my patch fine. I've no glue why it fails for you.

Probably, could you first verify that there is a bug in wine? If not it's probably a bug with my machine. A simple example which should trigger the bug in wine is attached. You could build it with mingw.
Command: "wine main.exe | uniq | wc"
Output on wine:     142     142    4118
Output on windows:    1000    1000   28000
Wine used the same unique temp names two times or more in a row, so that the number is smaller than 1000. This makes it possible to fail the qedit test on my machine. On windows I get always 1000.

Cheers
Rico
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>

int main()
{
    char name[1024];
    int i;
    for(i=0;i<1000;i++)
    {
        GetTempFileName("C:\\windows\\temp\\", "murks", 0, name); 
DeleteFile(name);
        printf("%s\n", name);
    }
    return 0;
}


Reply via email to