mirror of https://github.com/ARMmbed/mbed-os.git
ATHandler::read_int: allow returning 0 successfully
parent
033fffea84
commit
c0032c9055
|
|
@ -722,7 +722,22 @@ int32_t ATHandler::read_int()
|
|||
return -1;
|
||||
}
|
||||
|
||||
return std::strtol(buff, NULL, 10);
|
||||
errno = 0;
|
||||
char *endptr;
|
||||
long result = std::strtol(buff, &endptr, 10);
|
||||
if ((result == LONG_MIN || result == LONG_MAX) && errno == ERANGE) {
|
||||
return -1; // overflow/underflow
|
||||
}
|
||||
if (result < 0) {
|
||||
return -1; // negative values are unsupported
|
||||
}
|
||||
if (*buff == '\0') {
|
||||
return -1; // empty string
|
||||
}
|
||||
if (*endptr != '\0') {
|
||||
return -1; // trailing garbage
|
||||
}
|
||||
return (int32_t) result;
|
||||
}
|
||||
|
||||
void ATHandler::set_delimiter(char delimiter)
|
||||
|
|
|
|||
|
|
@ -410,9 +410,9 @@ public:
|
|||
*/
|
||||
ssize_t read_hex_string(char *str, size_t size);
|
||||
|
||||
/** Reads as string and converts result to integer. Supports only positive integers.
|
||||
/** Reads as string and converts result to integer. Supports only non-negative integers.
|
||||
*
|
||||
* @return the positive integer or -1 in case of error.
|
||||
* @return the non-negative integer or -1 in case of error.
|
||||
*/
|
||||
int32_t read_int();
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue