mirror of
https://git.code.sf.net/p/quake/quakeforge
synced 2025-02-18 09:51:40 +00:00
fix assignops with entity fields by cloning e1 rather than just re-using it
This commit is contained in:
parent
248de6858d
commit
79ce6c56ca
1 changed files with 12 additions and 10 deletions
|
@ -810,27 +810,29 @@ type_mismatch:
|
||||||
expr_t *
|
expr_t *
|
||||||
asx_expr (int op, expr_t *e1, expr_t *e2)
|
asx_expr (int op, expr_t *e1, expr_t *e2)
|
||||||
{
|
{
|
||||||
|
expr_t *e = new_expr ();
|
||||||
|
*e = *e1;
|
||||||
switch (op) {
|
switch (op) {
|
||||||
case ASADD:
|
case ASADD:
|
||||||
return binary_expr ('=', e1, binary_expr ('+', e1, e2));
|
return binary_expr ('=', e, binary_expr ('+', e1, e2));
|
||||||
case ASSUB:
|
case ASSUB:
|
||||||
return binary_expr ('=', e1, binary_expr ('-', e1, e2));
|
return binary_expr ('=', e, binary_expr ('-', e1, e2));
|
||||||
case ASMUL:
|
case ASMUL:
|
||||||
return binary_expr ('=', e1, binary_expr ('*', e1, e2));
|
return binary_expr ('=', e, binary_expr ('*', e1, e2));
|
||||||
case ASDIV:
|
case ASDIV:
|
||||||
return binary_expr ('=', e1, binary_expr ('/', e1, e2));
|
return binary_expr ('=', e, binary_expr ('/', e1, e2));
|
||||||
case ASAND:
|
case ASAND:
|
||||||
return binary_expr ('=', e1, binary_expr ('&', e1, e2));
|
return binary_expr ('=', e, binary_expr ('&', e1, e2));
|
||||||
case ASOR:
|
case ASOR:
|
||||||
return binary_expr ('=', e1, binary_expr ('|', e1, e2));
|
return binary_expr ('=', e, binary_expr ('|', e1, e2));
|
||||||
case ASXOR:
|
case ASXOR:
|
||||||
return binary_expr ('=', e1, binary_expr ('^', e1, e2));
|
return binary_expr ('=', e, binary_expr ('^', e1, e2));
|
||||||
case ASMOD:
|
case ASMOD:
|
||||||
return binary_expr ('=', e1, binary_expr ('%', e1, e2));
|
return binary_expr ('=', e, binary_expr ('%', e1, e2));
|
||||||
case ASSHL:
|
case ASSHL:
|
||||||
return binary_expr ('=', e1, binary_expr (SHL, e1, e2));
|
return binary_expr ('=', e, binary_expr (SHL, e1, e2));
|
||||||
case ASSHR:
|
case ASSHR:
|
||||||
return binary_expr ('=', e1, binary_expr (SHR, e1, e2));
|
return binary_expr ('=', e, binary_expr (SHR, e1, e2));
|
||||||
default:
|
default:
|
||||||
error (e1, "invalid operand for asx");
|
error (e1, "invalid operand for asx");
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue