Fix undefined behavior in line drawing.
Left shift of negative values is undefined.
This commit is contained in:
parent
92af03579c
commit
abb5c9fd92
@ -655,7 +655,7 @@ Line2( Mat& img, Point2l pt1, Point2l pt2, const void* color)
|
||||
pt1.y ^= pt2.y & j;
|
||||
|
||||
x_step = XY_ONE;
|
||||
y_step = (dy << XY_SHIFT) / (ax | 1);
|
||||
y_step = dy * (1 << XY_SHIFT) / (ax | 1);
|
||||
ecount = (int)((pt2.x - pt1.x) >> XY_SHIFT);
|
||||
}
|
||||
else
|
||||
@ -668,7 +668,7 @@ Line2( Mat& img, Point2l pt1, Point2l pt2, const void* color)
|
||||
pt2.y ^= pt1.y & i;
|
||||
pt1.y ^= pt2.y & i;
|
||||
|
||||
x_step = (dx << XY_SHIFT) / (ay | 1);
|
||||
x_step = dx * (1 << XY_SHIFT) / (ay | 1);
|
||||
y_step = XY_ONE;
|
||||
ecount = (int)((pt2.y - pt1.y) >> XY_SHIFT);
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user