Skip to content

Commit a187043

Browse files
Remove strlen in calls like String::concat(s, strlen(s))
Instead of calling strlen in a dozen places, instead just call String::concat(s), which will then call strlen. This shrinks the code size of these calls significantly, the StringAppendOperator example on the Arduino Uno shrinks by 72 bytes. This change does incur a slight runtime cost, because there is one extra function call.
1 parent db70ee5 commit a187043

File tree

2 files changed

+16
-16
lines changed

2 files changed

+16
-16
lines changed

hardware/arduino/avr/cores/arduino/WString.cpp

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -289,49 +289,49 @@ unsigned char String::concat(unsigned char num)
289289
{
290290
char buf[1 + 3 * sizeof(unsigned char)];
291291
itoa(num, buf, 10);
292-
return concat(buf, strlen(buf));
292+
return concat(buf);
293293
}
294294

295295
unsigned char String::concat(int num)
296296
{
297297
char buf[2 + 3 * sizeof(int)];
298298
itoa(num, buf, 10);
299-
return concat(buf, strlen(buf));
299+
return concat(buf);
300300
}
301301

302302
unsigned char String::concat(unsigned int num)
303303
{
304304
char buf[1 + 3 * sizeof(unsigned int)];
305305
utoa(num, buf, 10);
306-
return concat(buf, strlen(buf));
306+
return concat(buf);
307307
}
308308

309309
unsigned char String::concat(long num)
310310
{
311311
char buf[2 + 3 * sizeof(long)];
312312
ltoa(num, buf, 10);
313-
return concat(buf, strlen(buf));
313+
return concat(buf);
314314
}
315315

316316
unsigned char String::concat(unsigned long num)
317317
{
318318
char buf[1 + 3 * sizeof(unsigned long)];
319319
ultoa(num, buf, 10);
320-
return concat(buf, strlen(buf));
320+
return concat(buf);
321321
}
322322

323323
unsigned char String::concat(float num)
324324
{
325325
char buf[20];
326326
char* string = dtostrf(num, 4, 2, buf);
327-
return concat(string, strlen(string));
327+
return concat(string);
328328
}
329329

330330
unsigned char String::concat(double num)
331331
{
332332
char buf[20];
333333
char* string = dtostrf(num, 4, 2, buf);
334-
return concat(string, strlen(string));
334+
return concat(string);
335335
}
336336

337337
unsigned char String::concat(const __FlashStringHelper * str)
@@ -360,7 +360,7 @@ StringSumHelper & operator + (const StringSumHelper &lhs, const String &rhs)
360360
StringSumHelper & operator + (const StringSumHelper &lhs, const char *cstr)
361361
{
362362
StringSumHelper &a = const_cast<StringSumHelper&>(lhs);
363-
if (!cstr || !a.concat(cstr, strlen(cstr))) a.invalidate();
363+
if (!cstr || !a.concat(cstr)) a.invalidate();
364364
return a;
365365
}
366366

hardware/arduino/sam/cores/arduino/WString.cpp

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -291,49 +291,49 @@ unsigned char String::concat(unsigned char num)
291291
{
292292
char buf[1 + 3 * sizeof(unsigned char)];
293293
itoa(num, buf, 10);
294-
return concat(buf, strlen(buf));
294+
return concat(buf);
295295
}
296296

297297
unsigned char String::concat(int num)
298298
{
299299
char buf[2 + 3 * sizeof(int)];
300300
itoa(num, buf, 10);
301-
return concat(buf, strlen(buf));
301+
return concat(buf);
302302
}
303303

304304
unsigned char String::concat(unsigned int num)
305305
{
306306
char buf[1 + 3 * sizeof(unsigned int)];
307307
utoa(num, buf, 10);
308-
return concat(buf, strlen(buf));
308+
return concat(buf);
309309
}
310310

311311
unsigned char String::concat(long num)
312312
{
313313
char buf[2 + 3 * sizeof(long)];
314314
ltoa(num, buf, 10);
315-
return concat(buf, strlen(buf));
315+
return concat(buf);
316316
}
317317

318318
unsigned char String::concat(unsigned long num)
319319
{
320320
char buf[1 + 3 * sizeof(unsigned long)];
321321
ultoa(num, buf, 10);
322-
return concat(buf, strlen(buf));
322+
return concat(buf);
323323
}
324324

325325
unsigned char String::concat(float num)
326326
{
327327
char buf[20];
328328
char* string = dtostrf(num, 4, 2, buf);
329-
return concat(string, strlen(string));
329+
return concat(string);
330330
}
331331

332332
unsigned char String::concat(double num)
333333
{
334334
char buf[20];
335335
char* string = dtostrf(num, 4, 2, buf);
336-
return concat(string, strlen(string));
336+
return concat(string);
337337
}
338338

339339
unsigned char String::concat(const __FlashStringHelper * str)
@@ -362,7 +362,7 @@ StringSumHelper & operator + (const StringSumHelper &lhs, const String &rhs)
362362
StringSumHelper & operator + (const StringSumHelper &lhs, const char *cstr)
363363
{
364364
StringSumHelper &a = const_cast<StringSumHelper&>(lhs);
365-
if (!cstr || !a.concat(cstr, strlen(cstr))) a.invalidate();
365+
if (!cstr || !a.concat(cstr)) a.invalidate();
366366
return a;
367367
}
368368

0 commit comments

Comments
 (0)