Skip to content

Commit cfd31d1

Browse files
committed
make sure data value exists before type conversion
1 parent f18f500 commit cfd31d1

File tree

1 file changed

+27
-0
lines changed

1 file changed

+27
-0
lines changed

AdafruitIO_Data.cpp

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -184,11 +184,17 @@ char* AdafruitIO_Data::toChar()
184184

185185
String AdafruitIO_Data::toString()
186186
{
187+
if(! _value)
188+
return String();
189+
187190
return String(_value);
188191
}
189192

190193
bool AdafruitIO_Data::toBool()
191194
{
195+
if(! _value)
196+
return false;
197+
192198
if(strcmp(_value, "1") == 0 || _value[0] == 't' || _value[0] == 'T')
193199
return true;
194200
else
@@ -207,6 +213,9 @@ bool AdafruitIO_Data::isFalse()
207213

208214
int AdafruitIO_Data::toInt()
209215
{
216+
if(! _value)
217+
return 0;
218+
210219
char* endptr;
211220
return (int)strtol(_value, &endptr, 10);
212221
}
@@ -221,6 +230,9 @@ int AdafruitIO_Data::toPinLevel()
221230

222231
unsigned int AdafruitIO_Data::toUnsignedInt()
223232
{
233+
if(! _value)
234+
return 0;
235+
224236
char* endptr;
225237
#ifdef ESP8266
226238
// For some reason strtoul is not defined on the ESP8266 platform right now.
@@ -233,24 +245,36 @@ unsigned int AdafruitIO_Data::toUnsignedInt()
233245

234246
float AdafruitIO_Data::toFloat()
235247
{
248+
if(! _value)
249+
return 0;
250+
236251
char* endptr;
237252
return (float)strtod(_value, &endptr);
238253
}
239254

240255
double AdafruitIO_Data::toDouble()
241256
{
257+
if(! _value)
258+
return 0;
259+
242260
char* endptr;
243261
return strtod(_value, &endptr);
244262
}
245263

246264
long AdafruitIO_Data::toLong()
247265
{
266+
if(! _value)
267+
return 0;
268+
248269
char* endptr;
249270
return strtol(_value, &endptr, 10);
250271
}
251272

252273
unsigned long AdafruitIO_Data::toUnsignedLong()
253274
{
275+
if(! _value)
276+
return 0;
277+
254278
char* endptr;
255279
#ifdef ESP8266
256280
// For some reason strtoul is not defined on the ESP8266 platform right now.
@@ -265,6 +289,9 @@ char* AdafruitIO_Data::toCSV()
265289
{
266290
char csv[150];
267291

292+
if(! _value)
293+
return _csv;
294+
268295
strcpy(csv, _value);
269296
strcat(csv, ",");
270297
strcat(csv, charFromDouble(_lat));

0 commit comments

Comments
 (0)