[issue16587] Py_Initialize breaks wprintf on Windows

2014-06-23 Thread Markus Kettunen
Markus Kettunen added the comment: It's quite common to use wide character strings to support Unicode in C and C++. In C++ this often means using std::wstring and std::wcout. Maybe these are more common than wprintf? In any case the console output breaks as Py_Initialize hijacks the host

[issue16587] Py_Initialize breaks wprintf on Windows

2014-06-23 Thread STINNER Victor
STINNER Victor added the comment: In C++ this often means using std::wstring and std::wcout. Maybe these are more common than wprintf? In any case the console output breaks as Py_Initialize hijacks the host application's standard output streams which sounds quite illegitimate to me. On

[issue16587] Py_Initialize breaks wprintf on Windows

2014-06-23 Thread Markus Kettunen
Markus Kettunen added the comment: On Linux, std::wcout doesn't use wprintf(). Do you mean that std::wcout also depends on the mode of stdout (_setmode)? Yes, exactly. I originally noticed this bug by using std::wcout on Windows. -- ___ Python

[issue16587] Py_Initialize breaks wprintf on Windows

2014-06-16 Thread STINNER Victor
STINNER Victor added the comment: If I understood correctly, supporting the wide mode for wprintf() requires to modify all calls to functions like printf() in Python and so it requires to change a lot of code. Since this issue was the first time that I heard about wprintf(), I don't think

[issue16587] Py_Initialize breaks wprintf on Windows

2014-06-15 Thread Mark Lawrence
Mark Lawrence added the comment: I'll let our Windows gurus fight over who gets this one :) -- nosy: +BreamoreBoy, steve.dower, tim.golden, zach.ware ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue16587

[issue16587] Py_Initialize breaks wprintf on Windows

2013-04-13 Thread John Ehresman
John Ehresman added the comment: One way to fix this is to use the FileRead FileWrite api functions directly as proposed in issue 17723 I would regard this as a change in behavior and not a simple bug fix because there is probably code written for 3.3 that assumes the C level stdout is in

[issue16587] Py_Initialize breaks wprintf on Windows

2012-12-03 Thread STINNER Victor
STINNER Victor added the comment: _setmode(self-fd, O_BINARY) change was done in Python 3.2: see the issue #10841 The main reason was to be able to read binary file from sys.stdin using the CGI module: see the issue #4953. In _O_TEXT mode, 0x0A byte is replaced with 0x0A 0x0D (or the

[issue16587] Py_Initialize breaks wprintf on Windows

2012-12-02 Thread Antoine Pitrou
Changes by Antoine Pitrou pit...@free.fr: -- nosy: +haypo ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue16587 ___ ___ Python-bugs-list mailing

[issue16587] Py_Initialize breaks wprintf on Windows

2012-12-02 Thread STINNER Victor
STINNER Victor added the comment: _setmode(self-fd, O_BINARY) change was done in Python 3.2: see the issue #10841. This change introduced regressions: - #11272: input() has trailing carriage return on windows, fixed in Python 3.2.1 - #11395: print(s) fails on Windows with long strings,

[issue16587] Py_Initialize breaks wprintf on Windows

2012-12-02 Thread Arfrever Frehtes Taifersar Arahesis
Changes by Arfrever Frehtes Taifersar Arahesis arfrever@gmail.com: -- nosy: +Arfrever ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue16587 ___

[issue16587] Py_Initialize breaks wprintf on Windows

2012-11-30 Thread Markus Kettunen
New submission from Markus Kettunen: In a C application on Windows, at least on MSVC 2010 and Windows 7, do this: wprintf(LTest\n); Py_Initialize(); wprintf(LTest\n); Output is: Test T e s t I was able to track the issue to fileio.c to the following code block by searching where wprintf

[issue16587] Py_Initialize breaks wprintf on Windows

2012-11-30 Thread Markus Kettunen
Markus Kettunen added the comment: If the standard streams are not used through Python, this hack can be used to work around the bug on C side: #ifdef WIN32 #include fcntl.h #endif ... Py_Initialize(); #ifdef WIN32 _setmode(stdin-_file, O_TEXT); _setmode(stdout-_file, O_TEXT);