From 87d13927c6311bf120c6e87ecbd6c4f8a33fed42 Mon Sep 17 00:00:00 2001
From: Rob <rob@synchro.net>
Date: Sat, 3 Oct 2020 12:12:04 -0700
Subject: [PATCH] Fix savemsg() bug introduced in dd8c962025 (Sep-30),
 returning false failure

'i' is the return value of savemg(), used to determine success or failure
(and what kind of failure) - so we can't use that for the usernumber of
the recipient.
---
 src/sbbs3/postmsg.cpp | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)

diff --git a/src/sbbs3/postmsg.cpp b/src/sbbs3/postmsg.cpp
index f2bae8aea8..e54a2921f4 100644
--- a/src/sbbs3/postmsg.cpp
+++ b/src/sbbs3/postmsg.cpp
@@ -493,17 +493,18 @@ extern "C" int DLLCALL savemsg(scfg_t* cfg, smb_t* smb, smbmsg_t* msg, client_t*
 			signal_sub_sem(cfg,smb->subnum);
 
 		if(msg->to_net.type == NET_NONE && !(msg->hdr.attr & MSG_ANONYMOUS) && cfg->text != NULL) {
+			int usernum = 0;
 			if(msg->to_ext != NULL)
-				i = atoi(msg->to_ext);
+				usernum = atoi(msg->to_ext);
 			else if(smb->subnum != INVALID_SUB && (cfg->sub[smb->subnum]->misc & SUB_NAME))
-				i = userdatdupe(cfg, 0, U_NAME, LEN_NAME, msg->to, /* del: */FALSE, /* next: */FALSE, NULL, NULL);
+				usernum = userdatdupe(cfg, 0, U_NAME, LEN_NAME, msg->to, /* del: */FALSE, /* next: */FALSE, NULL, NULL);
 			else
-				i = matchuser(cfg, msg->to, TRUE /* sysop_alias */);
-			if(i > 0 && (client == NULL || i != (int)client->usernum)) {
+				usernum = matchuser(cfg, msg->to, TRUE /* sysop_alias */);
+			if(usernum > 0 && (client == NULL || usernum != (int)client->usernum)) {
 				char str[256];
 				if(smb->subnum == INVALID_SUB) {
 					safe_snprintf(str, sizeof(str), cfg->text[UserSentYouMail], msg->from);
-					putsmsg(cfg, i, str);
+					putsmsg(cfg, usernum, str);
 				} else {
 					char fido_buf[64];
 					const char* via = smb_netaddrstr(&msg->from_net, fido_buf);
@@ -513,7 +514,7 @@ extern "C" int DLLCALL savemsg(scfg_t* cfg, smb_t* smb, smbmsg_t* msg, client_t*
 						,msg->from
 						,via
 						,cfg->grp[cfg->sub[smb->subnum]->grp]->sname,cfg->sub[smb->subnum]->lname);
-					putsmsg(cfg, i, str);
+					putsmsg(cfg, usernum, str);
 				}
 			}
 		}
-- 
GitLab