Skip to content

Commit 9553745

Browse files
committed
Improved portability of String class (maniacbug)
1 parent 959e6a9 commit 9553745

File tree

1 file changed

+10
-11
lines changed

1 file changed

+10
-11
lines changed

arduino/avr/cores/arduino/WString.cpp

+10-11
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121

2222
#include "WString.h"
2323

24-
2524
/*********************************************/
2625
/* Constructors */
2726
/*********************************************/
@@ -69,39 +68,39 @@ String::String(char c)
6968
String::String(unsigned char value, unsigned char base)
7069
{
7170
init();
72-
char buf[9];
71+
char buf[1 + 8 * sizeof(unsigned char)];
7372
utoa(value, buf, base);
7473
*this = buf;
7574
}
7675

7776
String::String(int value, unsigned char base)
7877
{
7978
init();
80-
char buf[18];
79+
char buf[2 + 8 * sizeof(int)];
8180
itoa(value, buf, base);
8281
*this = buf;
8382
}
8483

8584
String::String(unsigned int value, unsigned char base)
8685
{
8786
init();
88-
char buf[17];
87+
char buf[1 + 8 * sizeof(unsigned int)];
8988
utoa(value, buf, base);
9089
*this = buf;
9190
}
9291

9392
String::String(long value, unsigned char base)
9493
{
9594
init();
96-
char buf[34];
95+
char buf[2 + 8 * sizeof(long)];
9796
ltoa(value, buf, base);
9897
*this = buf;
9998
}
10099

101100
String::String(unsigned long value, unsigned char base)
102101
{
103102
init();
104-
char buf[33];
103+
char buf[1 + 8 * sizeof(unsigned long)];
105104
ultoa(value, buf, base);
106105
*this = buf;
107106
}
@@ -288,35 +287,35 @@ unsigned char String::concat(char c)
288287

289288
unsigned char String::concat(unsigned char num)
290289
{
291-
char buf[4];
290+
char buf[1 + 3 * sizeof(unsigned char)];
292291
itoa(num, buf, 10);
293292
return concat(buf, strlen(buf));
294293
}
295294

296295
unsigned char String::concat(int num)
297296
{
298-
char buf[12];
297+
char buf[2 + 3 * sizeof(int)];
299298
itoa(num, buf, 10);
300299
return concat(buf, strlen(buf));
301300
}
302301

303302
unsigned char String::concat(unsigned int num)
304303
{
305-
char buf[11];
304+
char buf[1 + 3 * sizeof(unsigned int)];
306305
utoa(num, buf, 10);
307306
return concat(buf, strlen(buf));
308307
}
309308

310309
unsigned char String::concat(long num)
311310
{
312-
char buf[12];
311+
char buf[2 + 3 * sizeof(long)];
313312
ltoa(num, buf, 10);
314313
return concat(buf, strlen(buf));
315314
}
316315

317316
unsigned char String::concat(unsigned long num)
318317
{
319-
char buf[11];
318+
char buf[1 + 3 * sizeof(unsigned long)];
320319
ultoa(num, buf, 10);
321320
return concat(buf, strlen(buf));
322321
}

0 commit comments

Comments
 (0)