Opened 15 years ago
Closed 15 years ago
#1092 closed Bug (Fixed)
_Timer_SetTimer, Kill datatype discrepancies
Reported by: | Ascend4nt | Owned by: | Jpm |
---|---|---|---|
Milestone: | 3.3.1.2 | Component: | AutoIt |
Version: | 3.3.0.0 | Severity: | None |
Keywords: | Cc: |
Description
The functions _Timer_SetTimer(), _Timer_KillTimer, and _Timer_KillAllTimers in <Timers.au3> on AutoIT 3.3.0.0 have a few data type discrepancies that might cause it to fail on x64 (haven't tested it myself but I assume you'd at least want the correct size variables)
Specifically the 'int' vs 'uint_ptr' is the most important (the other corrections are just to make the value unsigned (all per MSDN notes).
Here's the problems for SetTimer:
$hCallBack = DllCallbackRegister($sTimerFunc, "none", "hwnd;int;int;dword")
should be:
$hCallBack = DllCallbackRegister($sTimerFunc, "none", "hwnd;uint;uint_ptr;dword")
Also, there's two DllCall lines, I think they are identical, which read as:
$iResult = DllCall("user32.dll", "int", "SetTimer", "hwnd", $hWnd, "int", $iTimerID, "int", $iElapse, "ptr", $pTimerFunc)
They should be:
$iResult = DllCall("user32.dll", "uint_ptr", "SetTimer", "hwnd", $hWnd, "uint_ptr", $iTimerID, "uint", $iElapse, "ptr", $pTimerFunc)
For the 'KillTimer' and 'KillAllTimers' functions, the DLLCalls (multiple ones) are setup like this:
$iResult = DllCall("user32.dll", "int", "KillTimer", "hwnd", $hWnd, "int", $_Timers_aTimerIDs[$x][1])
But the calls should be:
$iResult = DllCall("user32.dll", "int", "KillTimer", "hwnd", $hWnd, "uint_ptr", $_Timers_aTimerIDs[$x][1])
That's all, thanks
Attachments (0)
Change History (3)
comment:1 Changed 15 years ago by Valik
comment:2 Changed 15 years ago by Ascend4nt
yup, just checked - the type definitions are wrong in the Beta too
comment:3 Changed 15 years ago by Jpm
- Milestone set to 3.3.1.2
- Owner set to Jpm
- Resolution set to Fixed
- Status changed from new to closed
Fixed in version: 3.3.1.2
Guidelines for posting comments:
- You cannot re-open a ticket but you may still leave a comment if you have additional information to add.
- In-depth discussions should take place on the forum.
For more information see the full version of the ticket guidelines here.
Have you checked the beta version? Don't report bugs against 3.3.0.0 because it may be fixed in the beta.