From a4dbf56574617b6312b9365f62ab7eac841892ff Mon Sep 17 00:00:00 2001 From: Drew Bliss Date: Thu, 6 Apr 2017 13:27:51 -0700 Subject: [PATCH] Fix divide-by-zero when videodata->ime_candpgsize is zero. We're seeing this happen in Dota in the wild. --- src/video/windows/SDL_windowskeyboard.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/video/windows/SDL_windowskeyboard.c b/src/video/windows/SDL_windowskeyboard.c index 4161e5627..2018a3065 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++) {