Skip to content

Commit de11ddb

Browse files
committed
Fixed a crash on listen servers introduced by the fix for issue #175
1 parent 73c86a2 commit de11ddb

File tree

1 file changed

+24
-21
lines changed

1 file changed

+24
-21
lines changed

Diff for: src/core/sp_python.cpp

+24-21
Original file line numberDiff line numberDiff line change
@@ -178,28 +178,31 @@ bool CPythonManager::Initialize( void )
178178
// using PyFile_FromFd. This is kinda weird since GetStdHandle is returning valid handles for them
179179
// but oh well... reconnecting them seems to fix the issues from my testings.
180180
#ifdef _WIN32
181-
object sys = python::import("sys");
182-
object io_open = python::import("io").attr("open");
181+
// This fix currently only works for dedicated servers, but crashes on listen servers.
182+
if (engine->IsDedicatedServer()) {
183+
object sys = python::import("sys");
184+
object io_open = python::import("io").attr("open");
183185

184-
object stdin_ = sys.attr("stdin");
185-
if (stdin_.is_none())
186-
{
187-
DevMsg(1, MSG_PREFIX "stdin is None... reconnecting.\n");
188-
sys.attr("stdin") = sys.attr("__stdin__") = io_open("CONIN$", "rt");
189-
}
190-
191-
object stdout_ = sys.attr("stdout");
192-
if (stdout_.is_none())
193-
{
194-
DevMsg(1, MSG_PREFIX "stdout is None... reconnecting.\n");
195-
sys.attr("stdout") = sys.attr("__stdout__") = io_open("CONOUT$", "wt");
196-
}
197-
198-
object stderr_ = sys.attr("stderr");
199-
if (stderr_.is_none())
200-
{
201-
DevMsg(1, MSG_PREFIX "stderr is None... reconnecting.\n");
202-
sys.attr("stderr") = sys.attr("__stderr__") = io_open("CONERR$", "wt");
186+
object stdin_ = sys.attr("stdin");
187+
if (stdin_.is_none())
188+
{
189+
DevMsg(1, MSG_PREFIX "stdin is None... reconnecting.\n");
190+
sys.attr("stdin") = sys.attr("__stdin__") = io_open("CONIN$", "rt");
191+
}
192+
193+
object stdout_ = sys.attr("stdout");
194+
if (stdout_.is_none())
195+
{
196+
DevMsg(1, MSG_PREFIX "stdout is None... reconnecting.\n");
197+
sys.attr("stdout") = sys.attr("__stdout__") = io_open("CONOUT$", "wt");
198+
}
199+
200+
object stderr_ = sys.attr("stderr");
201+
if (stderr_.is_none())
202+
{
203+
DevMsg(1, MSG_PREFIX "stderr is None... reconnecting.\n");
204+
sys.attr("stderr") = sys.attr("__stderr__") = io_open("CONERR$", "wt");
205+
}
203206
}
204207
#endif
205208

0 commit comments

Comments
 (0)