diff --git a/src/sbbs3/load_cfg.c b/src/sbbs3/load_cfg.c
index 61c69d880bb60fabb114d7f7d955beaeae08bae1..ee0ecb55f86c5b35c9528dff1c344e4e17a96b55 100644
--- a/src/sbbs3/load_cfg.c
+++ b/src/sbbs3/load_cfg.c
@@ -347,8 +347,11 @@ int md(const char* inpath)
 		*p = '\0';
 
 	if(!isdir(path)) {
-		if(mkpath(path) != 0)
-			return errno;
+		if(mkpath(path) != 0) {
+			int result = errno;
+			if(!isdir(path)) // race condition: did another thread make the directory already?
+				return result;
+		}
 	}
 	
 	return 0;