Maximus5 / ConEmu

Customizable Windows terminal with tabs, splits, quake-style, hotkeys and more
https://conemu.github.io/
BSD 3-Clause "New" or "Revised" License
8.64k stars 580 forks source link

При запуске программ из-под ConEmu printf() затирает ошибку WSAGetLastError() #1293

Open ac opened 7 years ago

ac commented 7 years ago

Versions

ConEmu build: 170807 x64 OS version: Windows [Version 10.0.17017.1000] x64 Used shell version FAR 3.0.5066 x64

Problem description

При запуске программ из-под ConEmu printf() затирает ошибку WSAGetLastError() - если после вызова сокетной функции вызывать printf, то после него WSAGetLastError() вернёт ноль, хотя под другими консолями код ошибки сохраняется.

Steps to reproduce

#include <stdio.h>
#include <winsock2.h>
#pragma comment(lib, "ws2_32.lib")

int main(int argc, char * argv[]) {
    int UdpQ = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
    printf("ERROR_1=%i\n", WSAGetLastError());
    printf("ERROR_2=%i\n", WSAGetLastError());
    return 0;
}

Actual results

(под ConEmu) ERROR_1=10093 ERROR_2=0

Expected results

(под обычной консолью) ERROR_1=10093 ERROR_2=10093

Maximus5 commented 7 years ago

Альфу проверяли?

ac commented 7 years ago

В альфе 170910 наблюдаю ту же проблему.