diff --git a/src/SoftwareSerial.cpp b/src/SoftwareSerial.cpp index 84d2f3f..b733a40 100644 --- a/src/SoftwareSerial.cpp +++ b/src/SoftwareSerial.cpp @@ -89,16 +89,14 @@ void SoftwareSerial::begin(uint32_t baud, SoftwareSerialConfig config, m_bitCycles = (ESP.getCpuFreqMHz() * 1000000UL + baud / 2) / baud; m_intTxEnabled = true; if (isValidRxGPIOpin(m_rxPin)) { - std::unique_ptr > buffer(new circular_queue((bufCapacity > 0) ? bufCapacity : 64)); - m_buffer = move(buffer); + m_buffer.reset(new circular_queue((bufCapacity > 0) ? bufCapacity : 64)); if (m_parityMode) { - std::unique_ptr > parityBuffer(new circular_queue((bufCapacity > 0) ? (bufCapacity + 7) / 8 : 8)); - m_parityBuffer = move(parityBuffer); + m_parityBuffer.reset(new circular_queue((m_buffer->capacity() + 7) / 8)); m_parityInPos = m_parityOutPos = 1; } - std::unique_ptr > isrBuffer(new circular_queue((isrBufCapacity > 0) ? isrBufCapacity : (sizeof(uint8_t) * 8 + 2) * bufCapacity)); - m_isrBuffer = move(isrBuffer); + m_isrBuffer.reset(new circular_queue((isrBufCapacity > 0) ? + isrBufCapacity : m_buffer->capacity() * (2 + m_dataBits + static_cast(m_parityMode)))); if (m_buffer && (!m_parityMode || m_parityBuffer) && m_isrBuffer) { m_rxValid = true; pinMode(m_rxPin, INPUT_PULLUP);