fix doargs segv
parent
38c17d1911
commit
c97e56d7b7
|
@ -352,11 +352,15 @@ static void cs_do_args(CsState &cs, F body) {
|
||||||
}
|
}
|
||||||
CsIdentLink *prevstack = cs.p_callstack->next;
|
CsIdentLink *prevstack = cs.p_callstack->next;
|
||||||
CsIdentLink aliaslink = {
|
CsIdentLink aliaslink = {
|
||||||
cs.p_callstack->id, cs.p_callstack, prevstack->usedargs, prevstack->argstack
|
cs.p_callstack->id, cs.p_callstack,
|
||||||
|
prevstack ? prevstack->usedargs : ((1 << MaxArguments) - 1),
|
||||||
|
prevstack ? prevstack->argstack : nullptr
|
||||||
};
|
};
|
||||||
cs.p_callstack = &aliaslink;
|
cs.p_callstack = &aliaslink;
|
||||||
cs_do_and_cleanup(ostd::move(body), [&]() {
|
cs_do_and_cleanup(ostd::move(body), [&]() {
|
||||||
prevstack->usedargs = aliaslink.usedargs;
|
if (prevstack) {
|
||||||
|
prevstack->usedargs = aliaslink.usedargs;
|
||||||
|
}
|
||||||
cs.p_callstack = aliaslink.next;
|
cs.p_callstack = aliaslink.next;
|
||||||
int argmask2 = cs.p_callstack->usedargs;
|
int argmask2 = cs.p_callstack->usedargs;
|
||||||
for (int i = 0; argmask2; argmask2 >>= 1, ++i) {
|
for (int i = 0; argmask2; argmask2 >>= 1, ++i) {
|
||||||
|
|
Loading…
Reference in New Issue