Commit a4dbf56574617b6312b9365f62ab7eac841892ff

Drew Bliss 2017-04-06T13:27:51

Fix divide-by-zero when videodata->ime_candpgsize is zero. We're seeing this happen in Dota in the wild.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
diff --git a/src/video/windows/SDL_windowskeyboard.c b/src/video/windows/SDL_windowskeyboard.c
index 4161e56..2018a30 100644
--- a/src/video/windows/SDL_windowskeyboard.c
+++ b/src/video/windows/SDL_windowskeyboard.c
@@ -834,7 +834,11 @@ IME_GetCandidateList(HIMC himc, SDL_VideoData *videodata)
                     videodata->ime_candpgsize = i - page_start;
                 } else {
                     videodata->ime_candpgsize = SDL_min(cand_list->dwPageSize, MAX_CANDLIST);
-                    page_start = (cand_list->dwSelection / videodata->ime_candpgsize) * videodata->ime_candpgsize;
+                    if (videodata->ime_candpgsize > 0) {
+                        page_start = (cand_list->dwSelection / videodata->ime_candpgsize) * videodata->ime_candpgsize;
+                    } else {
+                        page_start = 0;
+                    }
                 }
                 SDL_memset(&videodata->ime_candidates, 0, sizeof(videodata->ime_candidates));
                 for (i = page_start, j = 0; (DWORD)i < cand_list->dwCount && j < (int)videodata->ime_candpgsize; i++, j++) {