user32: Resend: Move character conversion logic to dde_server.d &remove todo's

Jeff Latimer lats at yless4u.com.au
Sun Jan 25 03:36:44 CST 2009


Dmitry Timoshkov wrote:
>> It highlights the problem and that the translation should take place 
>> in the server.  In earlier discussions last year this was an issue.
> Again, do you have a test case for that as a proof?
When solving the winebrowser problem, I was fixing the existing 
translation code in dde_client.c.  This broke the raw dde tests.  At 
that point I had a close look the results deduced that the code needed 
to be moved but a substantial test case had to be developed to 
demonstrate the situation.  I submitted the following dde.c tests:
    /* Test the combinations of A and W interfaces with A and W data
       end to end to ensure that data conversions are accurate */
    sprintf(buffer, "%s dde enda", argv[0]);
    CreateProcessA(NULL, buffer, NULL, NULL, FALSE,
                   CREATE_SUSPENDED, NULL, NULL, &startup, &proc);

    test_end_to_end_server(proc.hProcess, proc.hThread, TRUE);

    sprintf(buffer, "%s dde endw", argv[0]);
    CreateProcessA(NULL, buffer, NULL, NULL, FALSE,
                   CREATE_SUSPENDED, NULL, NULL, &startup, &proc);

    test_end_to_end_server(proc.hProcess, proc.hThread, FALSE);

    sprintf(buffer, "%s dde enda", argv[0]);
    CreateProcessA(NULL, buffer, NULL, NULL, FALSE,
                   CREATE_SUSPENDED, NULL, NULL, &startup, &proc);

    test_end_to_end_server(proc.hProcess, proc.hThread, FALSE);

    sprintf(buffer, "%s dde endw", argv[0]);
    CreateProcessA(NULL, buffer, NULL, NULL, FALSE,
                   CREATE_SUSPENDED, NULL, NULL, &startup, &proc);

    test_end_to_end_server(proc.hProcess, proc.hThread, TRUE);

These tests have todo's that are fixed by this patch we are discussing.  
The existing code dde_client is actually broken as it does not handle 
the todo's that are retired by this patch.  I am not sure that I can 
demonstrate the problem without "fixing" the existing code to 
demonstrate that it breaks the raw dde tests.  Do I have to go to this 
trouble to prove the case?
> Have you tested winebrowser under Windows to see if that's the case?
I did not know that we could do that.  I will have a look at it.
> And again, a test replicating the problem is required in order to avoid
> a regression in future.
The tests I have previously had accepted actually demonstrate the 
problem and guard against regression.




More information about the wine-devel mailing list