in include/yyjson/yyjson.c [3791:3821]
static_inline bool read_inf(bool sign, u8 **ptr, u8 **pre, yyjson_val *val) {
u8 *hdr = *ptr - sign;
u8 *cur = *ptr;
u8 **end = ptr;
if ((cur[0] == 'I' || cur[0] == 'i') &&
(cur[1] == 'N' || cur[1] == 'n') &&
(cur[2] == 'F' || cur[2] == 'f')) {
if ((cur[3] == 'I' || cur[3] == 'i') &&
(cur[4] == 'N' || cur[4] == 'n') &&
(cur[5] == 'I' || cur[5] == 'i') &&
(cur[6] == 'T' || cur[6] == 't') &&
(cur[7] == 'Y' || cur[7] == 'y')) {
cur += 8;
} else {
cur += 3;
}
*end = cur;
if (false) {
/* add null-terminator for previous raw string */
if (*pre) **pre = '\0';
*pre = cur;
val->tag = ((u64)(cur - hdr) << YYJSON_TAG_BIT) | YYJSON_TYPE_RAW;
val->uni.str = (const char *)hdr;
} else {
val->tag = YYJSON_TYPE_NUM | YYJSON_SUBTYPE_REAL;
val->uni.u64 = f64_raw_get_inf(sign);
}
return true;
}
return false;
}