Skip to content

Commit 9201dd1

Browse files
committed
Improved portability of String class (maniacbug)
1 parent cb6cca6 commit 9201dd1

File tree

1 file changed

+10
-10
lines changed

1 file changed

+10
-10
lines changed

cores/arduino/WString.cpp

+10-10
Original file line numberDiff line numberDiff line change
@@ -70,39 +70,39 @@ String::String(char c)
7070
String::String(unsigned char value, unsigned char base)
7171
{
7272
init();
73-
char buf[9];
73+
char buf[1 + 8 * sizeof(unsigned char)];
7474
utoa(value, buf, base);
7575
*this = buf;
7676
}
7777

7878
String::String(int value, unsigned char base)
7979
{
8080
init();
81-
char buf[18];
81+
char buf[2 + 8 * sizeof(int)];
8282
itoa(value, buf, base);
8383
*this = buf;
8484
}
8585

8686
String::String(unsigned int value, unsigned char base)
8787
{
8888
init();
89-
char buf[17];
89+
char buf[1 + 8 * sizeof(unsigned int)];
9090
utoa(value, buf, base);
9191
*this = buf;
9292
}
9393

9494
String::String(long value, unsigned char base)
9595
{
9696
init();
97-
char buf[34];
97+
char buf[2 + 8 * sizeof(long)];
9898
ltoa(value, buf, base);
9999
*this = buf;
100100
}
101101

102102
String::String(unsigned long value, unsigned char base)
103103
{
104104
init();
105-
char buf[33];
105+
char buf[1 + 8 * sizeof(unsigned long)];
106106
ultoa(value, buf, base);
107107
*this = buf;
108108
}
@@ -289,35 +289,35 @@ unsigned char String::concat(char c)
289289

290290
unsigned char String::concat(unsigned char num)
291291
{
292-
char buf[4];
292+
char buf[1 + 3 * sizeof(unsigned char)];
293293
itoa(num, buf, 10);
294294
return concat(buf, strlen(buf));
295295
}
296296

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

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

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

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

0 commit comments

Comments
 (0)