@@ -292,7 +292,7 @@ parse_number_string(UC const *p, UC const *pend,
292292 answer.negative = (*p == UC (' -' ));
293293#ifdef FASTFLOAT_ALLOWS_LEADING_PLUS // disabled by default
294294 if ((*p == UC (' -' )) ||
295- (!int (fmt & detail::basic_json_fmt) && *p == UC (' +' ))) {
295+ (!uint64_t (fmt & detail::basic_json_fmt) && *p == UC (' +' ))) {
296296#else
297297 if (*p == UC (' -' )) { // C++17 20.19.3.(7.1) explicitly forbids '+' sign here
298298#endif
@@ -301,7 +301,7 @@ parse_number_string(UC const *p, UC const *pend,
301301 return report_parse_error<UC>(
302302 p, parse_error::missing_integer_or_dot_after_sign);
303303 }
304- if (int (fmt & detail::basic_json_fmt)) {
304+ if (uint64_t (fmt & detail::basic_json_fmt)) {
305305 if (!is_integer (*p)) { // a sign must be followed by an integer
306306 return report_parse_error<UC>(p,
307307 parse_error::missing_integer_after_sign);
@@ -330,7 +330,7 @@ parse_number_string(UC const *p, UC const *pend,
330330 UC const *const end_of_integer_part = p;
331331 int64_t digit_count = int64_t (end_of_integer_part - start_digits);
332332 answer.integer = span<const UC>(start_digits, size_t (digit_count));
333- if (int (fmt & detail::basic_json_fmt)) {
333+ if (uint64_t (fmt & detail::basic_json_fmt)) {
334334 // at least 1 digit in integer part, without leading zeros
335335 if (digit_count == 0 ) {
336336 return report_parse_error<UC>(p, parse_error::no_digits_in_integer_part);
@@ -359,7 +359,7 @@ parse_number_string(UC const *p, UC const *pend,
359359 answer.fraction = span<const UC>(before, size_t (p - before));
360360 digit_count -= exponent;
361361 }
362- if (int (fmt & detail::basic_json_fmt)) {
362+ if (uint64_t (fmt & detail::basic_json_fmt)) {
363363 // at least 1 digit in fractional part
364364 if (has_decimal_point && exponent == 0 ) {
365365 return report_parse_error<UC>(p,
@@ -370,9 +370,9 @@ parse_number_string(UC const *p, UC const *pend,
370370 return report_parse_error<UC>(p, parse_error::no_digits_in_mantissa);
371371 }
372372 int64_t exp_number = 0 ; // explicit exponential part
373- if ((int (fmt & chars_format::scientific) && (p != pend) &&
373+ if ((uint64_t (fmt & chars_format::scientific) && (p != pend) &&
374374 ((UC (' e' ) == *p) || (UC (' E' ) == *p))) ||
375- (int (fmt & detail::basic_fortran_fmt) && (p != pend) &&
375+ (uint64_t (fmt & detail::basic_fortran_fmt) && (p != pend) &&
376376 ((UC (' +' ) == *p) || (UC (' -' ) == *p) || (UC (' d' ) == *p) ||
377377 (UC (' D' ) == *p)))) {
378378 UC const *location_of_e = p;
@@ -390,7 +390,7 @@ parse_number_string(UC const *p, UC const *pend,
390390 ++p;
391391 }
392392 if ((p == pend) || !is_integer (*p)) {
393- if (!int (fmt & chars_format::fixed)) {
393+ if (!uint64_t (fmt & chars_format::fixed)) {
394394 // The exponential part is invalid for scientific notation, so it must
395395 // be a trailing token for fixed notation. However, fixed notation is
396396 // disabled, so report a scientific notation error.
@@ -413,8 +413,8 @@ parse_number_string(UC const *p, UC const *pend,
413413 }
414414 } else {
415415 // If it scientific and not fixed, we have to bail out.
416- if (int (fmt & chars_format::scientific) &&
417- !int (fmt & chars_format::fixed)) {
416+ if (uint64_t (fmt & chars_format::scientific) &&
417+ !uint64_t (fmt & chars_format::fixed)) {
418418 return report_parse_error<UC>(p, parse_error::missing_exponential_part);
419419 }
420420 }
0 commit comments