@@ -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