From 84c71a59e0534b46bd2a41402b9e32266757a5d1 Mon Sep 17 00:00:00 2001 From: Wayne Piekarski Date: Sat, 13 Aug 2022 00:32:53 -0700 Subject: [PATCH] Always clean up previous I2C object before new to avoid leaking memory --- libraries/Wire/Wire.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/libraries/Wire/Wire.cpp b/libraries/Wire/Wire.cpp index a17bb019a..5091f44a2 100644 --- a/libraries/Wire/Wire.cpp +++ b/libraries/Wire/Wire.cpp @@ -28,11 +28,13 @@ arduino::MbedI2C::MbedI2C(int sda, int scl) : _sda(digitalPinToPinName(sda)), _s arduino::MbedI2C::MbedI2C(PinName sda, PinName scl) : _sda(sda), _scl(scl), usedTxBuffer(0), slave_th(osPriorityNormal, 2048, nullptr, "I2CSlave") {} void arduino::MbedI2C::begin() { + end(); master = new mbed::I2C(_sda, _scl); } void arduino::MbedI2C::begin(uint8_t slaveAddr) { #ifdef DEVICE_I2CSLAVE + end(); slave = new mbed::I2CSlave((PinName)_sda, (PinName)_scl); slave->address(slaveAddr << 1); slave_th.start(mbed::callback(this, &arduino::MbedI2C::receiveThd));