mirror of
https://github.com/esp8266/Arduino.git
synced 2025-04-22 21:23:07 +03:00
Merge pull request #1693 from raheelh/patch-2
Leverage realloc() in String::changeBuffer()
This commit is contained in:
commit
7aa061c6ea
@ -153,13 +153,12 @@ unsigned char ICACHE_FLASH_ATTR String::reserve(unsigned int size) {
|
|||||||
|
|
||||||
unsigned char ICACHE_FLASH_ATTR String::changeBuffer(unsigned int maxStrLen) {
|
unsigned char ICACHE_FLASH_ATTR String::changeBuffer(unsigned int maxStrLen) {
|
||||||
size_t newSize = (maxStrLen + 16) & (~0xf);
|
size_t newSize = (maxStrLen + 16) & (~0xf);
|
||||||
char *newbuffer = (char *) malloc(newSize);
|
char *newbuffer = (char *) realloc(buffer, newSize);
|
||||||
if(newbuffer) {
|
if(newbuffer) {
|
||||||
memset(newbuffer, 0, newSize);
|
size_t oldSize = capacity + 1; // include NULL.
|
||||||
if (buffer)
|
if (newSize > oldSize)
|
||||||
{
|
{
|
||||||
memcpy(newbuffer, buffer, len);
|
memset(newbuffer + oldSize, 0, newSize - oldSize);
|
||||||
free(buffer);
|
|
||||||
}
|
}
|
||||||
capacity = newSize - 1;
|
capacity = newSize - 1;
|
||||||
buffer = newbuffer;
|
buffer = newbuffer;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user