There doesn’t appear to be any reason why a caller of _gej_rescale couldn’t pass an s that aliases one of the fields of r. In case it aliased r->y or r->z, at least a VERIFY_CHECK in _fe_mul could catch the problem. However if r->x were aliased, in general an invalid result would be silently produced, due to s being read after r->x is written.
This PR proposes simply copying s to a local at the start of the method. (Also updates the group.h method decl so that the parameter names match).