I've just found another bug in the patch:
/* Convert to OEM, then output */
convertedChars = WideCharToMultiByte(GetConsoleOutputCP(), 0,
output_bufW,
len, output_bufA, MAX_WRITECONSOLE_SIZE,
"?", &usedDefaultChar);
The comment is correct, but code is wrong. Here should be CP_OEMCP instead of GetConsoleOutputCP().
Please, ignore it. The patch is correct.