From 0eae2fa257ddd2b0f5883882d2f4bb33810b383c Mon Sep 17 00:00:00 2001 From: Mike Nolan Date: Fri, 18 Sep 2026 09:26:17 -0500 Subject: [PATCH] Fix image index underflow when navigating past boundaries --- viewer.cpp | 28 ++++++++++++++++++++++++---- 1 file changed, 24 insertions(+), 4 deletions(-) diff --git a/viewer.cpp b/viewer.cpp index 9b237a4..447dc4e 100644 --- a/viewer.cpp +++ b/viewer.cpp @@ -153,6 +153,18 @@ struct App { LoadImageList(curFile); } + void Prev() + { + this->imageIndex--; + if(this->imageIndex >= this->filenames.size()) + this->imageIndex=this->filenames.size()-1; + } + void Next() + { + this->imageIndex++; + if(this->imageIndex >= this->filenames.size()) + this->imageIndex=0; + } bool Update() { if(!window || !renderer) return false; SDL_Event evt; @@ -188,22 +200,28 @@ struct App { break; case SDL_SCANCODE_PAGEUP: { - SetNewImage(this->imageIndex-20); + for(size_t i = 0; i < 20; i++) + Prev(); + SetNewImage(this->imageIndex); } break; case SDL_SCANCODE_PAGEDOWN: { - SetNewImage(this->imageIndex+20); + for(size_t i = 0; i < 20; i++) + Next(); + SetNewImage(this->imageIndex); } break; case SDL_SCANCODE_LEFT: { - SetNewImage(this->imageIndex-1); + Prev(); + SetNewImage(this->imageIndex); } break; case SDL_SCANCODE_RIGHT: { - SetNewImage(this->imageIndex+1); + Next(); + SetNewImage(this->imageIndex); } break; case SDL_SCANCODE_F: @@ -218,6 +236,8 @@ struct App { } } break; + default: + break; } } break;