diff --git a/src/common/io/io_unix.c b/src/common/io/io_unix.c index c29b43a9f..54689ffae 100644 --- a/src/common/io/io_unix.c +++ b/src/common/io/io_unix.c @@ -216,7 +216,11 @@ const char* ffGetTerminalResponse(const char* request, int nParams, const char* bytesRead += (size_t) nRead; buffer[bytesRead] = '\0'; - int ret = vsscanf(buffer, format, args); + va_list cargs; + va_copy(cargs, args); + int ret = vsscanf(buffer, format, cargs); + va_end(cargs); + if (ret <= 0) { va_end(args); diff --git a/src/common/io/io_windows.c b/src/common/io/io_windows.c index 742d564ff..632530ccc 100644 --- a/src/common/io/io_windows.c +++ b/src/common/io/io_windows.c @@ -274,7 +274,11 @@ const char* ffGetTerminalResponse(const char* request, int nParams, const char* bytesRead += bytes; buffer[bytesRead] = '\0'; + va_list cargs; + va_copy(cargs, args); int ret = vsscanf(buffer, format, args); + va_end(cargs); + if (ret <= 0) { va_end(args);