tests CHANGE add test for int/uint parsers
diff --git a/src/common.c b/src/common.c
index e658031..f300958 100644
--- a/src/common.c
+++ b/src/common.c
@@ -312,6 +312,7 @@
ly_parse_int(const char *val_str, size_t val_len, int64_t min, int64_t max, int base, int64_t *ret)
{
char *strptr;
+ int64_t i;
LY_CHECK_ARG_RET(NULL, val_str, val_str[0], val_len, LY_EINVAL);
@@ -320,10 +321,10 @@
strptr = NULL;
/* parse the value */
- *ret = strtoll(val_str, &strptr, base);
+ i = strtoll(val_str, &strptr, base);
if (errno || strptr == val_str) {
return LY_EVALID;
- } else if ((*ret < min) || (*ret > max)) {
+ } else if ((i < min) || (i > max)) {
return LY_EDENIED;
} else if (strptr && *strptr) {
while (isspace(*strptr)) {
@@ -333,6 +334,8 @@
return LY_EVALID;
}
}
+
+ *ret = i;
return LY_SUCCESS;
}
@@ -358,8 +361,6 @@
if (*strptr && strptr < val_str + val_len) {
return LY_EVALID;
}
- } else if (u != 0 && val_str[0] == '-') {
- return LY_EDENIED;
}
*ret = u;