val = strtoull(buf, &end, 10);
if (end != buf)
*retval = val;
- return ((val == 0 && errno != 0) || (end == buf)) ? 1 : 0;
+ if ((val == 0 && errno != 0) || (end == buf))
+ {
+ errno = EINVAL;
+ return 1;
+ }
+ return 0;
}
#ifndef HAVE_REALLOC
*/
JSON_EXPORT const char *json_util_get_last_err(void);
-/* these parsing helpers return zero on success */
+/**
+ * A parsing helper for integer values. Returns 0 on success,
+ * with the parsed value assigned to *retval. Overflow/underflow
+ * are NOT considered errors, but errno will be set to ERANGE,
+ * just like the strtol/strtoll functions do.
+ */
JSON_EXPORT int json_parse_int64(const char *buf, int64_t *retval);
+/**
+ * A parsing help for integer values, providing one extra bit of
+ * magnitude beyond json_parse_int64().
+ */
JSON_EXPORT int json_parse_uint64(const char *buf, uint64_t *retval);
/**
* @deprecated