Lisp reader undefined behaviour excision

* src/lread.c (read_bool_vector, skip_lazy_string):
Replace `|` with `||` to explicitly introduce sequence points since
the variables, `length` and `nskip`, are mutated more than once.

The `|` was just a weak attempt at micro-optimisation in any case;
sorry about that.
This commit is contained in:
Mattias Engdegård 2022-12-06 12:13:18 +01:00
parent 717f847728
commit 9b9b39a2d8

View file

@ -3375,7 +3375,7 @@ read_bool_vector (Lisp_Object readcharfun)
break;
}
if (INT_MULTIPLY_WRAPV (length, 10, &length)
| INT_ADD_WRAPV (length, c - '0', &length))
|| INT_ADD_WRAPV (length, c - '0', &length))
invalid_syntax ("#&", readcharfun);
}
@ -3421,7 +3421,7 @@ skip_lazy_string (Lisp_Object readcharfun)
break;
}
if (INT_MULTIPLY_WRAPV (nskip, 10, &nskip)
| INT_ADD_WRAPV (nskip, c - '0', &nskip))
|| INT_ADD_WRAPV (nskip, c - '0', &nskip))
invalid_syntax ("#@", readcharfun);
digits++;
if (digits == 2 && nskip == 0)