Skip to content

Commit a5a18e1

Browse files
Clean up ::move assignment operator
1 parent c0529f6 commit a5a18e1

File tree

1 file changed

+5
-2
lines changed

1 file changed

+5
-2
lines changed

cores/esp8266/WString.cpp

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -223,11 +223,14 @@ String & String::copy(const __FlashStringHelper *pstr, unsigned int length) {
223223
#ifdef __GXX_EXPERIMENTAL_CXX0X__
224224
void String::move(String &rhs) {
225225
if(buffer()) {
226-
if(capacity() > rhs.len()) {
226+
if(capacity() >= rhs.len()) {
227227
strcpy(wbuffer(), rhs.buffer());
228228
setLen(rhs.len());
229+
if (!rhs.sso()) free(rhs.ptr.buf);
230+
rhs.setSSO(false);
231+
rhs.setCapacity(0);
229232
rhs.setLen(0);
230-
// TODO - does this leak rhs.ptr.buf??
233+
rhs.ptr.buf = nullptr;
231234
return;
232235
} else {
233236
if (!sso()) {

0 commit comments

Comments
 (0)