Procházet zdrojové kódy

Merge pull request #165 from Defragster/master

When concat is same string to string, use memcpy
teensy4-core
Paul Stoffregen před 8 roky
rodič
revize
9d48a9507d
1 změnil soubory, kde provedl 12 přidání a 1 odebrání
  1. +12
    -1
      teensy3/WString.cpp

+ 12
- 1
teensy3/WString.cpp Zobrazit soubor

@@ -248,8 +248,19 @@ String & String::append(const String &s)
String & String::append(const char *cstr, unsigned int length)
{
unsigned int newlen = len + length;
bool self = false;
unsigned int buffer_offset;
if ( (cstr >= buffer) && (cstr < (buffer+len) ) ) {
self = true;
buffer_offset = (unsigned int)(cstr-buffer);
}
if (length == 0 || !reserve(newlen)) return *this;
strcpy(buffer + len, cstr);
if ( self ) {
memcpy(buffer + len, buffer+buffer_offset, length);
buffer[newlen] = 0;
}
else
strcpy(buffer + len, cstr);
len = newlen;
return *this;
}

Načítá se…
Zrušit
Uložit