Re: winebrowser: Fix unicode recognition
"André Hentschel" <nerv(a)dawncrow.de> wrote:
This converts the DDE-Callbackfunction to Unicode. After days of winebrowser-hacking i turned it down to this clean code. It uses the function IsTextUnicode instead of guessing.(IsTextUnicode is guessing too, but in a cleaner way)
Please add a test case which uses mixed ansi/unicode DDE client/server and only then start fixing the code. -- Dmitry.
Dmitry Timoshkov schrieb:
"André Hentschel" <nerv(a)dawncrow.de> wrote:
This converts the DDE-Callbackfunction to Unicode. After days of winebrowser-hacking i turned it down to this clean code. It uses the function IsTextUnicode instead of guessing.(IsTextUnicode is guessing too, but in a cleaner way)
Please add a test case which uses mixed ansi/unicode DDE client/server and only then start fixing the code.
For winebrowser? Do we test any of our programs? Or for DDE? I think it is an important fix. We can have bugs in wine, but not in our programs we serve with it.
"André Hentschel" <nerv(a)dawncrow.de> wrote:
Please add a test case which uses mixed ansi/unicode DDE client/server and only then start fixing the code.
For winebrowser? Do we test any of our programs? Or for DDE?
Quoting above: "mixed ansi/unicode DDE client/server". -- Dmitry.
Dmitry Timoshkov wrote:
"André Hentschel" <nerv(a)dawncrow.de> wrote:
Please add a test case which uses mixed ansi/unicode DDE client/server and only then start fixing the code.
For winebrowser? Do we test any of our programs? Or for DDE?
Quoting above: "mixed ansi/unicode DDE client/server".
I put tests for the mixed conditions in test/dde.c quite a while ago: *//* 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 <http://source.winehq.org/ident?i=buffer>, /"%s dde enda"/, argv <http://source.winehq.org/ident?i=argv>[0]); CreateProcessA <http://source.winehq.org/ident?i=CreateProcessA>(NULL <http://source.winehq.org/ident?i=NULL>, buffer <http://source.winehq.org/ident?i=buffer>, NULL <http://source.winehq.org/ident?i=NULL>, NULL <http://source.winehq.org/ident?i=NULL>, FALSE <http://source.winehq.org/ident?i=FALSE>, CREATE_SUSPENDED <http://source.winehq.org/ident?i=CREATE_SUSPENDED>, NULL <http://source.winehq.org/ident?i=NULL>, NULL <http://source.winehq.org/ident?i=NULL>, &startup, &proc); test_end_to_end_server <http://source.winehq.org/ident?i=test_end_to_end_server>(proc.hProcess, proc.hThread <http://source.winehq.org/ident?i=hThread>, TRUE <http://source.winehq.org/ident?i=TRUE>); sprintf(buffer <http://source.winehq.org/ident?i=buffer>, /"%s dde endw"/, argv <http://source.winehq.org/ident?i=argv>[0]); <http://source.winehq.org/source/dlls/user32/tests/dde.c#L2430> CreateProcessA <http://source.winehq.org/ident?i=CreateProcessA>(NULL <http://source.winehq.org/ident?i=NULL>, buffer <http://source.winehq.org/ident?i=buffer>, NULL <http://source.winehq.org/ident?i=NULL>, NULL <http://source.winehq.org/ident?i=NULL>, FALSE <http://source.winehq.org/ident?i=FALSE>, <http://source.winehq.org/source/dlls/user32/tests/dde.c#L2431> CREATE_SUSPENDED <http://source.winehq.org/ident?i=CREATE_SUSPENDED>, NULL <http://source.winehq.org/ident?i=NULL>, NULL <http://source.winehq.org/ident?i=NULL>, &startup, &proc); test_end_to_end_server <http://source.winehq.org/ident?i=test_end_to_end_server>(proc.hProcess, proc.hThread <http://source.winehq.org/ident?i=hThread>, FALSE <http://source.winehq.org/ident?i=FALSE>); sprintf(buffer <http://source.winehq.org/ident?i=buffer>, /"%s dde enda"/, argv <http://source.winehq.org/ident?i=argv>[0]); CreateProcessA <http://source.winehq.org/ident?i=CreateProcessA>(NULL <http://source.winehq.org/ident?i=NULL>, buffer <http://source.winehq.org/ident?i=buffer>, NULL <http://source.winehq.org/ident?i=NULL>, NULL <http://source.winehq.org/ident?i=NULL>, FALSE <http://source.winehq.org/ident?i=FALSE>, CREATE_SUSPENDED <http://source.winehq.org/ident?i=CREATE_SUSPENDED>, NULL <http://source.winehq.org/ident?i=NULL>, NULL <http://source.winehq.org/ident?i=NULL>, &startup, &proc); test_end_to_end_server <http://source.winehq.org/ident?i=test_end_to_end_server>(proc.hProcess, proc.hThread <http://source.winehq.org/ident?i=hThread>, FALSE <http://source.winehq.org/ident?i=FALSE>); sprintf(buffer <http://source.winehq.org/ident?i=buffer>, /"%s dde endw"/, argv <http://source.winehq.org/ident?i=argv>[0]); CreateProcessA <http://source.winehq.org/ident?i=CreateProcessA>(NULL <http://source.winehq.org/ident?i=NULL>, buffer <http://source.winehq.org/ident?i=buffer>, NULL <http://source.winehq.org/ident?i=NULL>, NULL <http://source.winehq.org/ident?i=NULL>, FALSE <http://source.winehq.org/ident?i=FALSE>, CREATE_SUSPENDED <http://source.winehq.org/ident?i=CREATE_SUSPENDED>, NULL <http://source.winehq.org/ident?i=NULL>, NULL <http://source.winehq.org/ident?i=NULL>, &startup, &proc); Do these exhibit the situation you are referring too?
participants (3)
-
André Hentschel -
Dmitry Timoshkov -
Jeff Latimer