diff --git a/src/sbbs3/str.cpp b/src/sbbs3/str.cpp
index 301ae114108ddb531e141ae3bed8021904e8ce35..e0c9787104d6c319d3fac84ac33e777b58d60aab 100644
--- a/src/sbbs3/str.cpp
+++ b/src/sbbs3/str.cpp
@@ -919,13 +919,14 @@ void sbbs_t::errormsg(int line, char *source, char action, char *object
 	if(errno) {
 		sprintf(tmp,"\r\n     errno: %d",errno);
 		strcat(str,tmp); 
+		errno=0;
 	}
-#if defined(__MSDOS__) || defined(_WIN32)
+#if defined(__MSDOS__)
 	if(_doserrno && _doserrno!=(ulong)errno) {
 		sprintf(tmp,"\r\n  doserrno: %d",_doserrno);
 		strcat(str,tmp); 
 	}
-	errno=_doserrno=0;
+	_doserrno=0;
 #endif
 #if defined(_WIN32)
 	if(GetLastError()!=0) {