[Bug 1517] Advanced Archive Password Recovery -- endless loop

Wine Bugs wine-bugs at winehq.org
Mon Jun 4 10:35:16 CDT 2007


http://bugs.winehq.org/show_bug.cgi?id=1517





------- Additional Comments From focht at gmx.net  2007-04-06 10:35 -------
Created an attachment (id=6607)
 --> (http://bugs.winehq.org/attachment.cgi?id=6607&action=view)
Edit control auto scroll endless loop

Hello,

some random pick...

I downloaded the latest version (ARCHPR version 3.01 build 7), wine 0.9.38.
The application is protected by ASprotect 2.x but that isn't the showstopper
here.
After unwrapping the protected executable it seems to boil down to EDIT control
issue.

Attached is relevant WINEDEBUG=+seh,+tid,+relay,+win,+msg,+edit snippet

The application locks up while "auto scrolling" - after inserting text into
multiline edit control.
The target window/control is a plain EDIT control.
Offending application code basically goes like this:

--- snip pseudo code ---
LRESULT result = 0;
do
{
   result = SendMessage(hwnd, EM_SCROLL, SB_PAGEDOWN, 0);
}
while (HIWORD(result) == TRUE);
--- snip pseudo code ---

--- snip dlls/user32/edit.c ---
static LRESULT EDIT_EM_Scroll(EDITSTATE *es, INT action)
{
...
return MAKELONG((INT16)dy, (BOOL16)TRUE);

}
--- snip dlls/user32/edit.c ---

Windows returns 0x0 on first call.
Wine returns 0x0001fffe which is: (low) dy = 0xFFFE (-2) and (high) TRUE = 0x1

Though the application "auto scroll" code snippet is somewhat buggy too...
A cleaner solution would be like this (notice dy taken into account):

--- snip pseudo code ---
LRESULT result = 0;
do
{
   result = SendMessage(hwnd, EM_SCROLL, SB_PAGEDOWN, 0);
}
while ((HIWORD(result) == TRUE) && (LOWORD(result) > 0)); 
--- snip pseudo code ---

But the question remains why negative dy is returned (control resizing issue?
font?).
I hope I provided enough hints for someone to investigate this user32 issue
further.
If debugging is really needed, I can provide unwrapped executable upon request
to make life easier :-)

Regards

-- 
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.



More information about the wine-bugs mailing list