From ec4a8c96c24994cb157ac49104d89dd3cc0f1d19 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Deuc=D0=B5?= <shurd@sasktel.net> Date: Thu, 15 Feb 2024 18:02:28 -0500 Subject: [PATCH] Move fiddling with rip.x_max and rip.y_max out of the vstat mutex. Apparently, fiddling with them in there "strongly implies" to Coverity that vstatlock needs to be held to access them, and it's good form to have the lock held for the least span possible. --- src/syncterm/ripper.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/syncterm/ripper.c b/src/syncterm/ripper.c index a2807b808c..ffc5eb7122 100644 --- a/src/syncterm/ripper.c +++ b/src/syncterm/ripper.c @@ -8090,9 +8090,10 @@ rv_termset(const char * const var, const void * const data) rip.y_dim = 350; pthread_mutex_lock(&vstatlock); rip.x_max = vstat.scrnwidth; + rip.y_max = vstat.scrnheight; + pthread_mutex_unlock(&vstatlock); if (rip.x_max > rip.x_dim) rip.x_max = rip.x_dim; - rip.y_max = vstat.scrnheight; if (rip.y_max > rip.y_dim) rip.y_max = rip.y_dim; @@ -8105,7 +8106,6 @@ rv_termset(const char * const var, const void * const data) FREE_AND_NULL(rip.ymap); FREE_AND_NULL(rip.xunmap); FREE_AND_NULL(rip.yunmap); - pthread_mutex_unlock(&vstatlock); return NULL; } break; @@ -11708,9 +11708,10 @@ do_rip_command(int level, int sublevel, int cmd, const char *rawargs) rip.y_dim = y1; pthread_mutex_lock(&vstatlock); rip.x_max = vstat.scrnwidth; + rip.y_max = vstat.scrnheight; + pthread_mutex_unlock(&vstatlock); if (rip.x_max > rip.x_dim) rip.x_max = rip.x_dim; - rip.y_max = vstat.scrnheight; if (rip.y_max > rip.y_dim) rip.y_max = rip.y_dim; @@ -11723,7 +11724,6 @@ do_rip_command(int level, int sublevel, int cmd, const char *rawargs) FREE_AND_NULL(rip.ymap); FREE_AND_NULL(rip.xunmap); FREE_AND_NULL(rip.yunmap); - pthread_mutex_unlock(&vstatlock); break; case 'g': // RIP_GOTOXY !|g <x> <y> /* This command sets the position of the text cursor in the TTY @@ -16149,13 +16149,13 @@ init_rip(struct bbslist *bbs) if (cio_api.options & CONIO_OPT_SET_PIXEL) { pthread_mutex_lock(&vstatlock); rip.x_max = vstat.scrnwidth; + rip.y_max = vstat.scrnheight; + pthread_mutex_unlock(&vstatlock); if (rip.x_max > rip.x_dim) rip.x_max = rip.x_dim; rip.y_dim = 350; - rip.y_max = vstat.scrnheight; if (rip.y_max > rip.y_dim) rip.y_max = rip.y_dim; - pthread_mutex_unlock(&vstatlock); } rip.viewport.ex = rip.x_dim - 1; rip.viewport.ey = rip.y_dim - 1; -- GitLab