Skip to content

Commit 7aa061c

Browse files
committed
Merge pull request esp8266#1693 from raheelh/patch-2
Leverage realloc() in String::changeBuffer()
2 parents 2d34c1b + 2d77eae commit 7aa061c

File tree

1 file changed

+4
-5
lines changed

1 file changed

+4
-5
lines changed

cores/esp8266/WString.cpp

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -153,13 +153,12 @@ unsigned char ICACHE_FLASH_ATTR String::reserve(unsigned int size) {
153153

154154
unsigned char ICACHE_FLASH_ATTR String::changeBuffer(unsigned int maxStrLen) {
155155
size_t newSize = (maxStrLen + 16) & (~0xf);
156-
char *newbuffer = (char *) malloc(newSize);
156+
char *newbuffer = (char *) realloc(buffer, newSize);
157157
if(newbuffer) {
158-
memset(newbuffer, 0, newSize);
159-
if (buffer)
158+
size_t oldSize = capacity + 1; // include NULL.
159+
if (newSize > oldSize)
160160
{
161-
memcpy(newbuffer, buffer, len);
162-
free(buffer);
161+
memset(newbuffer + oldSize, 0, newSize - oldSize);
163162
}
164163
capacity = newSize - 1;
165164
buffer = newbuffer;

0 commit comments

Comments
 (0)