readr

Minimal Terminal RSS Reader
Log | Files | Refs | README | LICENSE

commit 3321d001b0f7ad7e56ebbb3372d5abcb6add15b8
parent 23db5f2d8c81c760b8f411ed380ad25cb4829792
Author: citbl <citbl@citbl.org>
Date:   Sat, 22 Nov 2025 20:28:07 +1000

fix segfault

Diffstat:
MTODO | 1-
Msrc/config.h | 2+-
Msrc/keys.c | 14+++++++++-----
3 files changed, 10 insertions(+), 7 deletions(-)

diff --git a/TODO b/TODO @@ -11,4 +11,3 @@ [ ] indented feeds under one [ ] unify duplicate urls [ ] reload button -[ ] segfaulting when going beyond the first feed?! diff --git a/src/config.h b/src/config.h @@ -1,6 +1,6 @@ #pragma once -#define VERSION "v1.8" +#define VERSION "v1.9" // recommended, pass as chrome for reddit feeds #define USER_AGENT \ diff --git a/src/keys.c b/src/keys.c @@ -98,10 +98,13 @@ static void up(app_t* app) { if (app->selected_panel == 0) { // change feed - app->selected_feed = MAX(app->selected_feed - 1, 0); + // MAX was causing unsigned int wraparound + if (app->selected_feed == 0) return; + app->selected_feed -= 1; app->selected_post = 0; } else if (app->selected_panel == 1) { // change post - app->selected_post = MAX(app->selected_post - 1, 0); + if (app->selected_post == 0) return; + app->selected_post -= 1; } } @@ -109,10 +112,11 @@ static void down(app_t* app) { if (app->selected_panel == 0) { // change feed - app->selected_feed = MIN(app->selected_feed + 1, app->feeds_len - 1); + if (app->selected_feed == app->feeds_len - 1) return; + app->selected_feed += 1; app->selected_post = 0; } else if (app->selected_panel == 1) { // change post - app->selected_post - = MIN(app->selected_post + 1, app->feeds[app->selected_feed]->posts_len - 1); + if (app->selected_post == app->feeds[app->selected_feed]->posts_len - 1) return; + app->selected_post += 1; } }