https://bugs.winehq.org/show_bug.cgi?id=39643
Bug ID: 39643 Summary: DM Genie 2.x fails on startup with 'Automation error. ... Check the Scripting function Skill Bonus' Product: Wine Version: 1.8-rc1 Hardware: x86-64 OS: Linux Status: NEW Severity: normal Priority: P2 Component: vbscript Assignee: wine-bugs@winehq.org Reporter: focht@gmx.net Distribution: ---
Hello folks,
continuation of bug 9095
--- snip --- $ pwd /home/focht/.wine/drive_c/Program Files/DM Genie
$ WINEDEBUG=+tid,+seh,+loaddll,+process,+vbscript,+ole,+variant wine ./DMGenie.exe >>log.txt 2>&1 ... 0027:trace:ole:SysAllocStringLen L"executing the general script 'SkillBonus'" 0027:trace:ole:ITypeInfo_fnAddRef (0x23bda60)->ref is 2 0027:trace:ole:SetErrorInfo (0, (nil)) 0027:trace:ole:ITypeInfo_fnInvoke (0x23bda60)(0x23acaf8,id=2000,flags=0x00000001,0x33c814,(nil),0x33c7f4,0x33c824) 0027:trace:ole:dump_DispParms args=1 named args=0 0027:trace:ole:dump_DispParms args: 0027:trace:ole:dump_DispParms [0] 0x33c858 {VT_BSTR: L"Public Sub SkillBonus(FinalCheck)\r\nn = func.GetSkillNum("SWIM")\r\nif n > 0 then\r\n cr.SkillTotal(n) = cr.SkillTotal(n) + FinalCheck\r\nend if\r\n\r\n'if cRace.PCRace the 0027:trace:ole:ITypeInfo_fnInvoke invoking: L"AddCode"(1) parm0: L"Code" memid is 000007d0 Param 0: tdesc.vartype 8 (VT_BSTR) u.paramdesc.wParamFlags PARAMFLAG_FIN u.paramdesc.lpex (nil) funckind: 1 (pure virtual) invkind: 1 (func) callconv: 4 (stdcall) oVft: 104 cParamsOpt: 0 wFlags: 0 elemdescFunc (return value type): tdesc.vartype 25 (VT_HRESULT) u.paramdesc.wParamFlags PARAMFLAGS_NONE u.paramdesc.lpex (nil) helpstring: L"Add code to the global module" entry: (null) 0027:trace:ole:ITypeInfo_fnInvoke changing args 0027:trace:ole:ITypeInfo_fnInvoke 0x33c858 {VT_BSTR: L"Public Sub SkillBonus(FinalCheck)\r\nn = func.GetSkillNum("SWIM")\r\nif n > 0 then\r\n cr.SkillTotal(n) = cr.SkillTotal(n) + FinalCheck\r\nend if\r\n\r\n'if cRace.PCRace the 0027:trace:ole:DispCallFunc (0x23acaf8, 104, 4, 10, 1, 0x4f18264, 0x4f18260, 0x33c480 (vt=10)) 0027:trace:ole:DispCallFunc arg 0: type VT_BSTR 0x33c858 {VT_BSTR: L"Public Sub SkillBonus(FinalCheck)\r\nn = func.GetSkillNum("SWIM")\r\nif n > 0 then\r\n cr.SkillTotal(n) = cr.SkillTotal(n) + FinalCheck\r\nend if\r\n\r\n'if cRace.PCRace the 0027:trace:vbscript:VBScript_SetScriptState (0x23acbe0)->(1) 0027:trace:vbscript:VBScriptParse_ParseScriptText (0x23acbe0)->(L"Public Sub SkillBonus(FinalCheck)\r\nn = func.GetSkillNum("SWIM")\r\nif n > 0 then\r\n cr.SkillTotal(n) = cr.SkillTotal(n) + FinalCheck\r\nend if\r\n\r\n'if cRace.PCRace then\r\n'n = func.GetSkillNum("JUMP")\r\n'if n > 0 then\r\n' sp = cr.Speed\r\n' modifier_to_jump = 0\r\n' if sp <= "... (null) (nil) (null) 0 1 2 (nil) 0x33c2fc) 0027:trace:ole:SysAllocStringLen L"func" 0027:trace:ole:SysAllocStringLen L"GetSkillNum" 0027:trace:ole:SysAllocStringLen L"n" 0027:trace:ole:SysAllocStringLen L"n" 0027:warn:vbscript:compile_call_statement converting call expr to assign expr 0027:trace:ole:SysAllocStringLen L"cr" 0027:trace:ole:SysAllocStringLen L"n" 0027:trace:ole:SysAllocStringLen L"cr" 0027:trace:ole:SysAllocStringLen L"SkillTotal" 0027:trace:ole:SysAllocStringLen L"FinalCheck" 0027:trace:ole:SysAllocStringLen L"n" 0027:trace:ole:SysAllocStringLen L"SkillTotal" 0027:fixme:vbscript:check_script_collisions L"SkillBonus": redefined 0027:trace:ole:DispCallFunc retval: 0x33c480 {VT_ERROR: 80004005} 0027:trace:variant:VariantClear (0x4f18240 {VT_EMPTY}) 0027:trace:variant:VariantClear (0x4f18250 {VT_EMPTY}) 0027:warn:ole:ITypeInfo_fnInvoke invoked function failed with error 0x80004005 0027:trace:ole:GetErrorInfo (0, 0x33c440, (nil)) 0027:trace:ole:ITypeInfo_fnInvoke -- 0x80020009 0027:trace:ole:ITypeInfo_fnRelease (0x23bda60)->(1) 0027:trace:seh:raise_exception code=c000008f flags=1 addr=0x7b8461c9 ip=7b8461c9 tid=0027 0027:trace:seh:raise_exception info[0]=deadcafe 0027:trace:seh:raise_exception info[1]=deadcafe 0027:trace:seh:raise_exception eax=7b832d3d ebx=00134230 ecx=00000008 edx=0033c704 esi=0033c814 edi=0033c814 0027:trace:seh:raise_exception ebp=0033c748 esp=0033c6e4 cs=0023 ds=002b es=002b fs=0063 gs=006b flags=00000202 0027:trace:seh:call_stack_handlers calling handler at 0x4419a6 code=c000008f flags=1 ... 0027:trace:variant:VarBstrCat L"Error -2147467259: 'Automation error'.\r\nRaised while calculating all skill bonuses. Check the Scripting function Skill Bonus.\r\n\r\nPress Ignore to continue.\r\nIf you press Abort, the program will end and you will lose any unsaved data.\r\nIf this error occurs again, try reinstalling DM Genie.\r\n" --- snip ---
Corresponding VBScript code, extracted from:
--- snip --- $ readlink -f Script.dmscr /home/focht/.wine/drive_c/Program Files/DM Genie/CoreRules/Data/Script.dmscr --- snip ---
--- snip --- ##### START SCRIPTFUNC ##### 2 26 350 0 3 SkillBonus
False 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 #####START##### {\rtf1\ansi\ansicpg1252\deff0{\fonttbl{\f0\fnil\fcharset0 MS Sans Serif;}} \viewkind4\uc1\pard\lang3084\f0\fs17 This function is called \b before \b0 calculating the total skill bonuses for all skills, through the normal calculation. Do NOT modifiy cr.SkillTemp- only cr.SkillTotal. \par \par \b FinalCheck\b0 is the total armor check penalty (and is <= 0). \par \par Notably, this function doubles the armor check penalty for Swim. Adjustment for Jump for the current speed can also be performed - uncomment the code and check the Get Race box. \par \par \b This code is called very frequently. Limit the amount of code here.\b0 \par }
#####END##### #####START##### Public Sub SkillBonus(FinalCheck) n = func.GetSkillNum("SWIM") if n > 0 then cr.SkillTotal(n) = cr.SkillTotal(n) + FinalCheck end if
'if cRace.PCRace then 'n = func.GetSkillNum("JUMP") 'if n > 0 then ' sp = cr.Speed ' modifier_to_jump = 0 ' if sp <= 20 then ' modifier_to_jump = int((30-sp)/10) * -6 ' elseif sp >= 40 then ' modifier_to_jump = int((sp-30)/10) * +4 ' end if ' cr.SkillTotal(n) = cr.SkillTotal(n) + modifier_to_jump 'end if 'end if
End Sub
#####END##### ##### END SCRIPTFUNC ##### --- snip ---
$ sha1sum DMGenie_Setup.exe a637a4e98fa09b9311f8cd78be6c9e7ff8bdbd2e DMGenie_Setup.exe
$ du -sh DMGenie_Setup.exe 8.0M DMGenie_Setup.exe
$ wine --version wine-1.8-rc1
Regards