diff --git a/src/utility/BLEUuid.cpp b/src/utility/BLEUuid.cpp index 0465ea9a..d822473c 100644 --- a/src/utility/BLEUuid.cpp +++ b/src/utility/BLEUuid.cpp @@ -22,9 +22,9 @@ #include "BLEUuid.h" -BLEUuid::BLEUuid(const char * str) : - _str(str) +BLEUuid::BLEUuid(const char * str) { + _str = strdup(str); char temp[] = {0, 0, 0}; memset(_data, 0x00, sizeof(_data)); @@ -56,6 +56,11 @@ BLEUuid::BLEUuid(const char * str) : } } +BLEUuid::~BLEUuid() +{ + free(_str); +} + const char* BLEUuid::str() const { return _str; diff --git a/src/utility/BLEUuid.h b/src/utility/BLEUuid.h index f6836bf6..6219ba4c 100644 --- a/src/utility/BLEUuid.h +++ b/src/utility/BLEUuid.h @@ -28,6 +28,7 @@ class BLEUuid { public: BLEUuid(const char * str); + ~BLEUuid(); const char* str() const; const uint8_t * data() const; @@ -36,7 +37,7 @@ class BLEUuid static const char* uuidToString(const uint8_t* data, uint8_t length); private: - const char* _str; + char* _str; uint8_t _data[BLE_UUID_MAX_LENGTH]; uint8_t _length; };