* fixed endless loop in UnHook and UnHookOpcode funcs + some other quirks
This commit is contained in:
parent
4633ed64be
commit
406f365ff7
@ -101,6 +101,17 @@ set,top ${@0}
|
|||||||
default,top ${@caller}
|
default,top ${@caller}
|
||||||
return #${top}::${@def}
|
return #${top}::${@def}
|
||||||
|
|
||||||
|
//---------------------------------------------------------
|
||||||
|
#script=sclistname
|
||||||
|
//---------------------------------------------------------
|
||||||
|
// purpose: returns the global name of a script list
|
||||||
|
// args: @def: script name
|
||||||
|
set,c ?{substr,1 ${@def}}
|
||||||
|
// it is a global name already if the script name starts with # or there is no caller script
|
||||||
|
if ?{or,?{equal,# ${c}} ?{not ${@caller}}}
|
||||||
|
return ${@def}
|
||||||
|
endif
|
||||||
|
return #DEFSCRIPT::SCRIPT::${@def}
|
||||||
|
|
||||||
//---------------------------------------------------------
|
//---------------------------------------------------------
|
||||||
#script=getvar
|
#script=getvar
|
||||||
@ -149,7 +160,7 @@ if ?{and,{?{strlen ${@def}}} ?{strlen ${sc}}}
|
|||||||
createdef ${sc}
|
createdef ${sc}
|
||||||
endif
|
endif
|
||||||
|
|
||||||
lpushback,{#DEFSCRIPT::SCRIPT::${sc}} ${@def}
|
lpushback,{?{sclistname ${sc}}} ${@def}
|
||||||
unset cmd
|
unset cmd
|
||||||
endif
|
endif
|
||||||
|
|
||||||
@ -161,5 +172,5 @@ endif
|
|||||||
// @0: script name
|
// @0: script name
|
||||||
// @def: line of text to look for
|
// @def: line of text to look for
|
||||||
|
|
||||||
return ?{lcontains,{#DEFSCRIPT::SCRIPT::?{lowercase ${@0}}} ${@def}}
|
return ?{lcontains,{?{sclistname ?{lowercase ${@0}}}} ${@def}}
|
||||||
|
|
||||||
|
|||||||
@ -26,7 +26,7 @@ set,sc ${@def}
|
|||||||
default,sc ${#hookhelper::CurScript}
|
default,sc ${#hookhelper::CurScript}
|
||||||
set,c ${@0}
|
set,c ${@0}
|
||||||
default,c ${@caller}
|
default,c ${@caller}
|
||||||
appenddef,{${sc}} #tag:hook-end:${c}
|
appenddef,{${sc}} #tag:hook-end
|
||||||
set,#hookhelper::CurScript
|
set,#hookhelper::CurScript
|
||||||
unset ${sc}
|
unset ${sc}
|
||||||
unset sc
|
unset sc
|
||||||
@ -74,19 +74,30 @@ HookStart,{${c}} OPCODE::${@def}
|
|||||||
#script=UnHook
|
#script=UnHook
|
||||||
// @def: name of script where to remove hook from
|
// @def: name of script where to remove hook from
|
||||||
// [@0: hook name (usually name of script that installed the hook). default: name of calling script]
|
// [@0: hook name (usually name of script that installed the hook). default: name of calling script]
|
||||||
|
set,target ?{lowercase ${@def}}
|
||||||
|
if ?{not ?{scriptexists ${target}}}
|
||||||
|
logerror UnHook called for nonexisting script '${target}' by '${@caller}'
|
||||||
|
endif
|
||||||
set,sc ${@0}
|
set,sc ${@0}
|
||||||
default,sc ${@caller}
|
default,sc ${@caller}
|
||||||
set,sl #DEFSCRIPT::SCRIPT::${@def}
|
set,sc ?{lowercase ${sc}}
|
||||||
|
set,sl ?{sclistname ${target}}
|
||||||
set,hn #tag:hook:${sc}
|
set,hn #tag:hook:${sc}
|
||||||
set,hne #tag:hook-end:${sc}
|
set,hne #tag:hook-end
|
||||||
|
//logdebug -- sl='${sl}' hn='${hn}' hne='${hne}'
|
||||||
loop
|
loop
|
||||||
if ?{not ?{IsHooked,{${sc}} ${@def}}}
|
if ?{not ?{IsHooked,{${sc}} ${target}}}
|
||||||
|
//logdebug -- unhook done
|
||||||
exitloop
|
exitloop
|
||||||
endif
|
endif
|
||||||
set,p ?{lfind,{${sl}} ${hn}}
|
set,p ?{lfind,{${sl}} ${hn}}
|
||||||
if ?{strlen ${p}}
|
set,line ?{lindex,{${sl}} ${p}}
|
||||||
|
//logdebug -- line[${p}] = ${line}
|
||||||
|
if ?{strlen ${p}} // p is empty string if the line wasnt found
|
||||||
loop
|
loop
|
||||||
if ?{equal,{?{lerase,{${sl}} ${p}}} ${hne}}
|
set,line2 ?{lerase,{${sl}} ${p}}
|
||||||
|
//logdebug -- removed: '${line2}'
|
||||||
|
if ?{equal,{${line2}} ${hne}}
|
||||||
exitloop
|
exitloop
|
||||||
endif
|
endif
|
||||||
endloop
|
endloop
|
||||||
@ -100,7 +111,7 @@ unset sc
|
|||||||
#script=UnHookOpcode
|
#script=UnHookOpcode
|
||||||
// @def: opcode name
|
// @def: opcode name
|
||||||
// [@0: name of calling script]
|
// [@0: name of calling script]
|
||||||
set,sc ?{@0}
|
set,sc ${@0}
|
||||||
default,sc ${@caller}
|
default,sc ${@caller}
|
||||||
UnHook,{${sc}} OPCODE::${@def}
|
UnHook,{${sc}} OPCODE::${@def}
|
||||||
|
|
||||||
@ -108,9 +119,9 @@ UnHook,{${sc}} OPCODE::${@def}
|
|||||||
// @def: name of script to remove all hooks from
|
// @def: name of script to remove all hooks from
|
||||||
// [@0: name of calling script]
|
// [@0: name of calling script]
|
||||||
set,sc ${@0}
|
set,sc ${@0}
|
||||||
set,sl #DEFSCRIPT::SCRIPT::${@def}
|
set,sl ?{sclistname ${@def}}
|
||||||
set,hn #tag:hook:
|
set,hn #tag:hook:
|
||||||
set,hne #tag:hook-end:
|
set,hne #tag:hook-end
|
||||||
set,i 0
|
set,i 0
|
||||||
set,hookcode false
|
set,hookcode false
|
||||||
loop
|
loop
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user