diff --git a/include/serial.h b/include/serial.h index bed5fd0..b4e2abe 100644 --- a/include/serial.h +++ b/include/serial.h @@ -91,7 +91,8 @@ class Serial { } template - bool OpenDevice(T portName, unsigned int bauds = 115200, int delayTime = 0) { + bool OpenDevice(T portName, unsigned int bauds = 115200, + int delayTime = 0) { std::string reallyPortName; std::format_to(std::back_inserter(reallyPortName), "\\\\.\\{}", portName); @@ -144,20 +145,18 @@ class Serial { Log("Send: " + reallyCommand); std::this_thread::sleep_for(10ms); auto availableSize = ser.available(); - char *buffer = new char[availableSize + 1]; - std::memset(buffer, 0, availableSize); - auto size = ser.readBytes(buffer, availableSize, timeout); + auto buffer = std::make_unique(availableSize + 1); + std::memset(buffer.get(), 0, availableSize); + auto size = ser.readBytes(buffer.get(), availableSize, timeout); if (size > 0) { buffer[size] = '\0'; std::string response = std::string(buffer); Log("Receive: " + response); - delete[] buffer; if (removeEcho) response.replace(0, reallyCommand.length(), ""); return response; } - delete[] buffer; return std::unexpected(SerialErrorCode::TIMEOUT); } @@ -185,11 +184,10 @@ class Serial { while (std::chrono::system_clock::now() < endTime) { std::this_thread::sleep_for(10ms); auto availableSize = ser.available(); - auto buffer = new char[availableSize + 1]; - auto size = ser.readBytes(buffer, availableSize, timeout); + auto buffer = std::make_unique(availableSize + 1); + auto size = ser.readBytes(buffer.get(), availableSize, timeout); buffer[size] = '\0'; - auto str = std::string(buffer); - delete[] buffer; + auto str = std::string(buffer.get()); if (size > 0) Log("Receive: " + str); if (((str.find(expect) != std::string::npos) && ...)) {