1
0
Fork 0
forked from fte/fteqw

Fix post-inc return values, oops. Bug reported by OneManClan.

git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@4736 fc73d0e0-1445-4013-8a0c-d673dee63da5
This commit is contained in:
Spoike 2014-08-29 11:33:11 +00:00
parent 3ee2712c3c
commit da0473bf5e

View file

@ -6404,14 +6404,13 @@ QCC_def_t *QCC_RefToDef(QCC_ref_t *ref, pbool freetemps)
QCC_def_t *ret = ref->base; QCC_def_t *ret = ref->base;
if (ref->postinc) if (ref->postinc)
{ {
QCC_def_t *origv;
int inc = ref->postinc; int inc = ref->postinc;
ref->postinc = 0; ref->postinc = 0;
//read the value, without preventing the store later //read the value, without preventing the store later
ret = QCC_RefToDef(ref, false); ret = QCC_RefToDef(ref, false);
//archive off the old value //archive off the old value
tmp = QCC_GetTemp(ret->type); tmp = QCC_GetTemp(ret->type);
origv = QCC_CollapseStore(tmp, ret, ret->type, true, !freetemps); QCC_StoreToDef(tmp, ret, ret->type, false, true);
ret = tmp; ret = tmp;
//update the value //update the value
switch(ref->cast->type) switch(ref->cast->type)
@ -6432,11 +6431,11 @@ QCC_def_t *QCC_RefToDef(QCC_ref_t *ref, pbool freetemps)
} }
//hack any following uses of the ref to refer to the temp //hack any following uses of the ref to refer to the temp
ref->type = REF_GLOBAL; ref->type = REF_GLOBAL;
ref->base = origv; ref->base = ret;
ref->index = NULL; ref->index = NULL;
ref->readonly = true; ref->readonly = true;
return origv; return ret;
} }
switch(ref->type) switch(ref->type)