From fd0dec627448582ac88e520ddf5bd6f313730576 Mon Sep 17 00:00:00 2001
From: Rob Swindell <rob@synchro.net>
Date: Mon, 26 Apr 2021 22:32:43 -0700
Subject: [PATCH] Fix error when moving files

e.g. file.cpp line 239 (removefile) removing "filename.zip" access=-203 info=smb_freemsgdat reading allocation record at offset 1108

Also, if there is an error removing the original file from the filebase, don't proceed to move the actual file (and log a successful move).
---
 src/sbbs3/file.cpp | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/src/sbbs3/file.cpp b/src/sbbs3/file.cpp
index 2b7c87aedb..e6b36dc38d 100644
--- a/src/sbbs3/file.cpp
+++ b/src/sbbs3/file.cpp
@@ -244,6 +244,7 @@ bool sbbs_t::removefile(smb_t* smb, file_t* f)
 /****************************************************************************/
 bool sbbs_t::movefile(smb_t* smb, file_t* f, int newdir)
 {
+	file_t orgfile = *f;
 	if(findfile(&cfg, newdir, f->name, NULL)) {
 		bprintf(text[FileAlreadyThere], f->name);
 		return false; 
@@ -251,7 +252,8 @@ bool sbbs_t::movefile(smb_t* smb, file_t* f, int newdir)
 
 	if(!addfile(&cfg, newdir, f, f->extdesc, /* client: */NULL))
 		return false;
-	removefile(smb, f);
+	if(!removefile(smb, &orgfile))
+		return false;
 	bprintf(text[MovedFile],f->name
 		,cfg.lib[cfg.dir[newdir]->lib]->sname,cfg.dir[newdir]->sname);
 	char str[MAX_PATH+1];
-- 
GitLab