From 71c3a97142265804d64f443bd1ddb68ac356f8a3 Mon Sep 17 00:00:00 2001 From: dslater38 Date: Thu, 12 Dec 2019 04:54:46 +0000 Subject: [PATCH] XWin: Fix infinite loop in GetShift() GetShift(int mask) can be called with mask==0, causing it to go into an infinite loop. Note: GetShift(mask) will return 0 for a mask of both 0 and -1. The assumption is that if mask == 0, then the corresponding bits for which we're calculating the shift, are also 0. --- hw/xwin/glx/indirect.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/hw/xwin/glx/indirect.c b/hw/xwin/glx/indirect.c index 38605914a4..59ee17fb10 100644 --- a/hw/xwin/glx/indirect.c +++ b/hw/xwin/glx/indirect.c @@ -1597,8 +1597,7 @@ static int GetShift(int mask) { int shift = 0; - - while ((mask &1) == 0) { + while (mask > 1) { shift++; mask >>=1; }