Patch against dmd r737, handles typeCombine errors
text/plain
2427
Comments
Comment #0 by rsinfu — 2010-11-06T12:32:31Z
Created attachment 803
Patch against dmd r737, handles typeCombine errors
In-place array operation "x[] op= y" causes a segfault if the types of x and y
are incompatible for that array op.
----------
void main()
{
int[] arr;
arr[] *= 1.5; // (4)
}
----------
% dmd -o- -c test.d
test.d(4): Error: incompatible types for ((arr[]) *= (1.5)): 'int[]' and
'double'
zsh: segmentation fault (core dumped) dmd -o- -c test.d
----------
The segfault happens in BinExp::arrayOp() when its type is TypeError because of
the incompatible types. The proposed patch makes it sure that the error
condition is handled before arrayOp().