UCL library bug
allanjude at freebsd.org
Thu Mar 18 16:23:41 UTC 2021
On 3/16/2021 6:11 AM, Eugene Grosbein wrote:
> 16.03.2021 16:03, Ionuț Mihalache wrote:
>> I am using the ucl library to write in a file 64bit values. The data type
>> is uint64_t or int64_t; on write I use %lu or %ld regarding the type and
>> everything works, on read on the other hand something weird seems to happen:
>> I read using %ld only and for small value it works, for values like
>> the ucl type type is recognized as UCL_STRING instead of UCL_INT and I
>> don't know why this is happening. Is there a bug in the library?
> Does it help if you use %lld instead? Or maybe %jd ?
> freebsd-hackers at freebsd.org mailing list
> To unsubscribe, send any mail to "freebsd-hackers-unsubscribe at freebsd.org"
There is an ENUM called ucl_string_flags that controls how a string is
parsed, it includes options for parsing it as a boolean, as int or
double, or as a timestamp.
We could extend this, and add UCL_STRING_PARSE_UINT or something, then
change ucl_maybe_parse_number() to respect that flag, and then use
strtoumax() instead of strtoimax().
I think the reason it uses strtoimax() by default, is that JSON only
supports signed integers.
More information about the freebsd-hackers