Skip to content

Commit 89f5be9

Browse files
authored
Fix a small divide by zero error in PointToFramebuffer (#750)
1 parent 76564ed commit 89f5be9

File tree

1 file changed

+7
-0
lines changed

1 file changed

+7
-0
lines changed

src/Windowing/Silk.NET.Windowing.Common/Internals/ViewImplementationBase.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -283,6 +283,8 @@ public Vector2D<int> PointToFramebuffer(Vector2D<int> point)
283283
Unsafe.As<int, Vector2D<int>>(ref framebufferSizeElements[0]) = FramebufferSize;
284284
var framebufferSize = new Vector<int>(framebufferSizeElements);
285285
Span<int> sizeElements = stackalloc int[Vector<int>.Count];
286+
// HACK: Avoid divide by zero errors
287+
sizeElements[2..].Fill(1);
286288
Unsafe.As<int, Vector2D<int>>(ref sizeElements[0]) = Size;
287289
var size = new Vector<int>(sizeElements);
288290
Span<int> pointElements = stackalloc int[Vector<int>.Count];
@@ -295,6 +297,11 @@ public Vector2D<int> PointToFramebuffer(Vector2D<int> point)
295297
Unsafe.As<int, Vector2D<int>>(ref a[0]) = FramebufferSize;
296298
Unsafe.As<int, Vector2D<int>>(ref a[c]) = Size;
297299
Unsafe.As<int, Vector2D<int>>(ref a[c * 2]) = point;
300+
301+
// HACK: Avoid divide by zero errors
302+
for (var i = c + 2; i < c * 2; i++)
303+
a[i] = 1;
304+
298305
var framebufferSize = new Vector<int>(a, 0);
299306
var size = new Vector<int>(a, c);
300307
var thePoint = new Vector<int>(a, c * 2);

0 commit comments

Comments
 (0)