Skip to content

Commit 16ca3c9

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 27bb766 commit 16ca3c9

File tree

1 file changed

+8
-8
lines changed

1 file changed

+8
-8
lines changed

Diff for: api/String.cpp

+8-8
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)