﻿id	summary	reporter	owner	description	type	status	milestone	component	version	severity	resolution	keywords	cc
249	_WinAPI_UpdateLayeredWindow() - missing error checking	Zedna	Gary	"in WinApi.au3 include file in _WinAPI_UpdateLayeredWindow() is missing error checking.

UpdateLayeredWindow API doesn't exists on WIN9x Windows (only WIN 2000 and above) so if you call this UDF function on WIN9x it crashes with this error:


{{{
==> Subscript used with non-Array variable.: 
Return SetError($aResult[0] = 0, 0, $aResult[0] <> 0) 
Return SetError($aResult^ ERROR
}}}


After DllCall() should be added this:

{{{
If @error Then Return SetError(1, 0, 0)
}}}

Here is complete testing script
with original commented UDF and corrected one:


{{{
_WinAPI_UpdateLayeredWindow(0, 0, 0, 0, 0, 0, 0, 0, 0)

;~ Func _WinAPI_UpdateLayeredWindow($hWnd, $hDCDest, $pPTDest, $pSize, $hDCSrce, $pPTSrce, $iRGB, $pBlend, $iFlags)
;~ 	Local $aResult

;~ 	$aResult = DllCall(""User32.dll"", ""int"", ""UpdateLayeredWindow"", ""hwnd"", $hWnd, ""hwnd"", $hDCDest, ""ptr"", $pPTDest, ""ptr"", $pSize, _
;~ 			""hwnd"", $hDCSrce, ""ptr"", $pPTSrce, ""int"", $iRGB, ""ptr"", $pBlend, ""int"", $iFlags)
;~ 	Return SetError($aResult[0] = 0, 0, $aResult[0] <> 0)
;~ EndFunc   ;==>_WinAPI_UpdateLayeredWindow

Func _WinAPI_UpdateLayeredWindow($hWnd, $hDCDest, $pPTDest, $pSize, $hDCSrce, $pPTSrce, $iRGB, $pBlend, $iFlags)
	Local $aResult

	$aResult = DllCall(""User32.dll"", ""int"", ""UpdateLayeredWindow"", ""hwnd"", $hWnd, ""hwnd"", $hDCDest, ""ptr"", $pPTDest, ""ptr"", $pSize, _
			""hwnd"", $hDCSrce, ""ptr"", $pPTSrce, ""int"", $iRGB, ""ptr"", $pBlend, ""int"", $iFlags)
	If @error Then Return SetError(1, 0, 0)
	Return SetError($aResult[0] = 0, 0, $aResult[0] <> 0)
EndFunc   ;==>_WinAPI_UpdateLayeredWindow

}}}


All tested on AutoIt 3.2.10 on WIN98SE"	Bug	closed	3.2.13.0	Standard UDFs	3.2.10.0	None	Fixed		
