free seems to touch errno on windows...?
Signed-off-by: Stefan Tauner stefan.tauner@student.tuwien.ac.at --- serial.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/serial.c b/serial.c index 7e47dcc..11a749c 100644 --- a/serial.c +++ b/serial.c @@ -109,6 +109,7 @@ fdtype sp_openserport(char *dev, unsigned int baud) #ifdef _WIN32 HANDLE fd; char *dev2 = dev; + int err; if ((strlen(dev) > 3) && (tolower((unsigned char)dev[0]) == 'c') && (tolower((unsigned char)dev[1]) == 'o') && (tolower((unsigned char)dev[2]) == 'm')) { @@ -122,10 +123,11 @@ fdtype sp_openserport(char *dev, unsigned int baud) } fd = CreateFile(dev2, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL); + err = errno; // free may change errno if (dev2 != dev) free(dev2); if (fd == INVALID_HANDLE_VALUE) { - msg_perr("Error: cannot open serial port: %s\n", strerror(errno)); + msg_perr("Error: cannot open serial port: %s\n", strerror(err)); return SER_INV_FD; } DCB dcb;