fmt
fmt copied to clipboard
Warnings thrown by Coverity static analyses
Doxygen uses spdlib and recently updated the version of spdlib. The used version of spdlib again has fmtlib 10.2.1 bundled into it . Coverity scan throws a number of warnings about this version:
New defect(s) Reported-by: Coverity Scan
Showing 20 of 24 defect(s)
** CID 434544: Memory - corruptions (OVERRUN)
________________________________________________________________________________________________________
*** CID 434544: Memory - corruptions (OVERRUN)
/home/runner/work/doxygen/doxygen/deps/spdlog/include/spdlog/fmt/bundled/format-inl.h: 1278 in fmt::v10::detail::dragonbox::to_decimal<float>(T1)()
1272
1273 const bool include_left_endpoint = (significand % 2 == 0);
1274 const bool include_right_endpoint = include_left_endpoint;
1275
1276 // Compute k and beta.
1277 const int minus_k = floor_log10_pow2(exponent) - float_info<T>::kappa;
>>> CID 434544: Memory - corruptions (OVERRUN)
>>> Overrunning callee's array of size 78 by passing argument "-minus_k" (which evaluates to 790) in call to "get_cached_power".
1278 const cache_entry_type cache = cache_accessor<T>::get_cached_power(-minus_k);
1279 const int beta = exponent + floor_log2_pow10(-minus_k);
1280
1281 // Compute zi and deltai.
1282 // 10^kappa <= deltai < 10^(kappa + 1)
1283 const uint32_t deltai = cache_accessor<T>::compute_delta(cache, beta);
** CID 434540: Error handling issues (NEGATIVE_RETURNS)
/home/runner/work/doxygen/doxygen/deps/spdlog/include/spdlog/fmt/bundled/core.h: 2164 in fmt::v10::detail::find<(bool)0, char, const char *>(T3, T3, T2, T3 &)()
________________________________________________________________________________________________________
*** CID 434540: Error handling issues (NEGATIVE_RETURNS)
/home/runner/work/doxygen/doxygen/deps/spdlog/include/spdlog/fmt/bundled/core.h: 2164 in fmt::v10::detail::find<(bool)0, char, const char *>(T3, T3, T2, T3 &)()
2158 return false;
2159 }
2160
2161 template <>
2162 inline auto find<false, char>(const char* first, const char* last, char value,
2163 const char*& out) -> bool {
>>> CID 434540: Error handling issues (NEGATIVE_RETURNS)
>>> "fmt::v10::detail::to_unsigned(last - first)" is passed to a parameter that cannot be negative. [Note: The source code implementation of the function has been overridden by a builtin model.]
2164 out = static_cast<const char*>(
2165 std::memchr(first, value, to_unsigned(last - first)));
2166 return out != nullptr;
2167 }
2168
2169 // Parses the range [begin, end) as an unsigned integer. This function assumes
** CID 434539: Integer handling issues (NEGATIVE_RETURNS)
________________________________________________________________________________________________________
*** CID 434539: Integer handling issues (NEGATIVE_RETURNS)
/home/runner/work/doxygen/doxygen/deps/spdlog/include/spdlog/fmt/bundled/core.h: 2235 in fmt::v10::detail::do_parse_arg_id<char, fmt::v10::detail::parse_replacement_field<char, fmt::v10::detail::vformat_to<char>(fmt::v10::detail::buffer<T1> &, fmt::v10::basic_string_view<T1>, fmt::v10::detail::vformat_args<T1>::type, fmt::v10::detail::locale_ref)::format_handler &>(const T1 *, const T1 *, T2 &&)::id_adapter &>(const T1 *, const T1 *, T2 &&)()
2229 return begin;
2230 }
2231 auto it = begin;
2232 do {
2233 ++it;
2234 } while (it != end && (is_name_start(*it) || ('0' <= *it && *it <= '9')));
>>> CID 434539: Integer handling issues (NEGATIVE_RETURNS)
>>> "fmt::v10::detail::to_unsigned(it - begin)" is passed to a parameter that cannot be negative.
2235 handler.on_name({begin, to_unsigned(it - begin)});
2236 return it;
2237 }
2238
2239 template <typename Char, typename Handler>
2240 FMT_CONSTEXPR FMT_INLINE auto parse_arg_id(const Char* begin, const Char* end,
** CID 434538: Integer handling issues (NEGATIVE_RETURNS)
________________________________________________________________________________________________________
*** CID 434538: Integer handling issues (NEGATIVE_RETURNS)
/home/runner/work/doxygen/doxygen/deps/spdlog/include/spdlog/fmt/bundled/format.h: 2792 in fmt::v10::detail::bigint::operator [](int) const()
2786 using double_bigit = uint64_t;
2787 enum { bigits_capacity = 32 };
2788 basic_memory_buffer<bigit, bigits_capacity> bigits_;
2789 int exp_;
2790
2791 FMT_CONSTEXPR20 auto operator[](int index) const -> bigit {
>>> CID 434538: Integer handling issues (NEGATIVE_RETURNS)
>>> "fmt::v10::detail::to_unsigned(index)" is passed to a parameter that cannot be negative.
2792 return bigits_[to_unsigned(index)];
2793 }
2794 FMT_CONSTEXPR20 auto operator[](int index) -> bigit& {
2795 return bigits_[to_unsigned(index)];
2796 }
2797
** CID 434537: Memory - illegal accesses (OVERRUN)
/home/runner/work/doxygen/doxygen/deps/spdlog/include/spdlog/fmt/bundled/format-inl.h: 289 in fmt::v10::detail::dragonbox::cache_accessor<float>::get_cached_power(int)()
________________________________________________________________________________________________________
*** CID 434537: Memory - illegal accesses (OVERRUN)
/home/runner/work/doxygen/doxygen/deps/spdlog/include/spdlog/fmt/bundled/format-inl.h: 289 in fmt::v10::detail::dragonbox::cache_accessor<float>::get_cached_power(int)()
283 0xa18f07d736b90be6, 0xc9f2c9cd04674edf, 0xfc6f7c4045812297,
284 0x9dc5ada82b70b59e, 0xc5371912364ce306, 0xf684df56c3e01bc7,
285 0x9a130b963a6c115d, 0xc097ce7bc90715b4, 0xf0bdc21abb48db21,
286 0x96769950b50d88f5, 0xbc143fa4e250eb32, 0xeb194f8e1ae525fe,
287 0x92efd1b8d0cf37bf, 0xb7abc627050305ae, 0xe596b7b0c643c71a,
288 0x8f7e32ce7bea5c70, 0xb35dbf821ae4f38c, 0xe0352f62a19e306f};
>>> CID 434537: Memory - illegal accesses (OVERRUN)
>>> Overrunning array "pow10_significands" of 78 8-byte elements at element index 78 (byte offset 631) using index "k - -31" (which evaluates to 78).
289 return pow10_significands[k - float_info<float>::min_k];
290 }
291
292 struct compute_mul_result {
293 carrier_uint result;
294 bool is_integer;
** CID 434535: Error handling issues (NEGATIVE_RETURNS)
/home/runner/work/doxygen/doxygen/deps/spdlog/include/spdlog/fmt/bundled/format.h: 592 in fmt::v10::detail::fill_n<char, int>(T1 *, T2, char)()
________________________________________________________________________________________________________
*** CID 434535: Error handling issues (NEGATIVE_RETURNS)
/home/runner/work/doxygen/doxygen/deps/spdlog/include/spdlog/fmt/bundled/format.h: 592 in fmt::v10::detail::fill_n<char, int>(T1 *, T2, char)()
586 }
587 template <typename T, typename Size>
588 FMT_CONSTEXPR20 auto fill_n(T* out, Size count, char value) -> T* {
589 if (is_constant_evaluated()) {
590 return fill_n<T*, Size, T>(out, count, value);
591 }
>>> CID 434535: Error handling issues (NEGATIVE_RETURNS)
>>> "fmt::v10::detail::to_unsigned(count)" is passed to a parameter that cannot be negative.
592 std::memset(out, value, to_unsigned(count));
593 return out + count;
594 }
595
596 #ifdef __cpp_char8_t
597 using char8_type = char8_t;
** CID 434533: (NEGATIVE_RETURNS)
________________________________________________________________________________________________________
*** CID 434533: (NEGATIVE_RETURNS)
/home/runner/work/doxygen/doxygen/deps/spdlog/include/spdlog/fmt/bundled/format.h: 2594 in fmt::v10::detail::write_significand<fmt::v10::appender, char, unsigned int, fmt::v10::detail::digit_grouping<char>>(T1, T3, int, int, T2, const T4 &)()
2588 return write_significand(out, significand, significand_size, integral_size,
2589 decimal_point);
2590 }
2591 auto buffer = basic_memory_buffer<Char>();
2592 write_significand(buffer_appender<Char>(buffer), significand,
2593 significand_size, integral_size, decimal_point);
>>> CID 434533: (NEGATIVE_RETURNS)
>>> "fmt::v10::detail::to_unsigned(integral_size)" is passed to a parameter that cannot be negative.
2594 grouping.apply(
2595 out, basic_string_view<Char>(buffer.data(), to_unsigned(integral_size)));
2596 return detail::copy_str_noinline<Char>(buffer.data() + integral_size,
2597 buffer.end(), out);
2598 }
2599
/home/runner/work/doxygen/doxygen/deps/spdlog/include/spdlog/fmt/bundled/format.h: 2594 in fmt::v10::detail::write_significand<fmt::v10::appender, char, const char *, fmt::v10::detail::digit_grouping<char>>(T1, T3, int, int, T2, const T4 &)()
2588 return write_significand(out, significand, significand_size, integral_size,
2589 decimal_point);
2590 }
2591 auto buffer = basic_memory_buffer<Char>();
2592 write_significand(buffer_appender<Char>(buffer), significand,
2593 significand_size, integral_size, decimal_point);
>>> CID 434533: (NEGATIVE_RETURNS)
>>> "fmt::v10::detail::to_unsigned(integral_size)" is passed to a parameter that cannot be negative.
2594 grouping.apply(
2595 out, basic_string_view<Char>(buffer.data(), to_unsigned(integral_size)));
2596 return detail::copy_str_noinline<Char>(buffer.data() + integral_size,
2597 buffer.end(), out);
2598 }
2599
/home/runner/work/doxygen/doxygen/deps/spdlog/include/spdlog/fmt/bundled/format.h: 2594 in fmt::v10::detail::write_significand<fmt::v10::appender, char, unsigned long, fmt::v10::detail::digit_grouping<char>>(T1, T3, int, int, T2, const T4 &)()
2588 return write_significand(out, significand, significand_size, integral_size,
2589 decimal_point);
2590 }
2591 auto buffer = basic_memory_buffer<Char>();
2592 write_significand(buffer_appender<Char>(buffer), significand,
2593 significand_size, integral_size, decimal_point);
>>> CID 434533: (NEGATIVE_RETURNS)
>>> "fmt::v10::detail::to_unsigned(integral_size)" is passed to a parameter that cannot be negative.
2594 grouping.apply(
2595 out, basic_string_view<Char>(buffer.data(), to_unsigned(integral_size)));
2596 return detail::copy_str_noinline<Char>(buffer.data() + integral_size,
2597 buffer.end(), out);
2598 }
2599
** CID 434530: (BAD_SHIFT)
/home/runner/work/doxygen/doxygen/deps/spdlog/include/spdlog/fmt/bundled/format-inl.h: 1060 in fmt::v10::detail::dragonbox::cache_accessor<double>::get_cached_power(int)()
/home/runner/work/doxygen/doxygen/deps/spdlog/include/spdlog/fmt/bundled/format-inl.h: 1060 in fmt::v10::detail::dragonbox::cache_accessor<double>::get_cached_power(int)()
________________________________________________________________________________________________________
*** CID 434530: (BAD_SHIFT)
/home/runner/work/doxygen/doxygen/deps/spdlog/include/spdlog/fmt/bundled/format-inl.h: 1060 in fmt::v10::detail::dragonbox::cache_accessor<double>::get_cached_power(int)()
1054
1055 recovered_cache += middle_low.high();
1056
1057 uint64_t high_to_middle = recovered_cache.high() << (64 - alpha);
1058 uint64_t middle_to_low = recovered_cache.low() << (64 - alpha);
1059
>>> CID 434530: (BAD_SHIFT)
>>> In expression "middle_low.low() >> alpha", right shifting by more than 63 bits has undefined behavior. The shift amount, "alpha", is at least 64.
1060 recovered_cache =
1061 uint128_fallback{(recovered_cache.low() >> alpha) | high_to_middle,
1062 ((middle_low.low() >> alpha) | middle_to_low)};
1063 FMT_ASSERT(recovered_cache.low() + 1 != 0, "");
1064 return {recovered_cache.high(), recovered_cache.low() + 1};
1065 #endif
/home/runner/work/doxygen/doxygen/deps/spdlog/include/spdlog/fmt/bundled/format-inl.h: 1060 in fmt::v10::detail::dragonbox::cache_accessor<double>::get_cached_power(int)()
1054
1055 recovered_cache += middle_low.high();
1056
1057 uint64_t high_to_middle = recovered_cache.high() << (64 - alpha);
1058 uint64_t middle_to_low = recovered_cache.low() << (64 - alpha);
1059
>>> CID 434530: (BAD_SHIFT)
>>> In expression "recovered_cache.low() >> alpha", right shifting by more than 63 bits has undefined behavior. The shift amount, "alpha", is at least 64.
1060 recovered_cache =
1061 uint128_fallback{(recovered_cache.low() >> alpha) | high_to_middle,
1062 ((middle_low.low() >> alpha) | middle_to_low)};
1063 FMT_ASSERT(recovered_cache.low() + 1 != 0, "");
1064 return {recovered_cache.high(), recovered_cache.low() + 1};
1065 #endif
** CID 434528: Integer handling issues (BAD_SHIFT)
/home/runner/work/doxygen/doxygen/deps/spdlog/include/spdlog/fmt/bundled/format-inl.h: 1097 in fmt::v10::detail::dragonbox::cache_accessor<double>::compute_mul_parity(unsigned long, const fmt::v10::detail::uint128_fallback &, int)()
________________________________________________________________________________________________________
*** CID 434528: Integer handling issues (BAD_SHIFT)
/home/runner/work/doxygen/doxygen/deps/spdlog/include/spdlog/fmt/bundled/format-inl.h: 1097 in fmt::v10::detail::dragonbox::cache_accessor<double>::compute_mul_parity(unsigned long, const fmt::v10::detail::uint128_fallback &, int)()
1091 int beta) noexcept
1092 -> compute_mul_parity_result {
1093 FMT_ASSERT(beta >= 1, "");
1094 FMT_ASSERT(beta < 64, "");
1095
1096 auto r = umul192_lower128(two_f, cache);
>>> CID 434528: Integer handling issues (BAD_SHIFT)
>>> In expression "r.high() << beta", left shifting by more than 63 bits has undefined behavior. The shift amount, "beta", is at least 64.
1097 return {((r.high() >> (64 - beta)) & 1) != 0,
1098 ((r.high() << beta) | (r.low() >> (64 - beta))) == 0};
1099 }
1100
1101 static auto compute_left_endpoint_for_shorter_interval_case(
1102 const cache_entry_type& cache, int beta) noexcept -> carrier_uint {
** CID 434524: Integer handling issues (NEGATIVE_RETURNS)
________________________________________________________________________________________________________
*** CID 434524: Integer handling issues (NEGATIVE_RETURNS)
/home/runner/work/doxygen/doxygen/deps/spdlog/include/spdlog/fmt/bundled/format.h: 4374 in fmt::v10::detail::vformat_to<char>(fmt::v10::detail::buffer<T1> &, fmt::v10::basic_string_view<T1>, fmt::v10::detail::vformat_args<T1>::type, fmt::v10::detail::locale_ref)::format_handler::on_text(const char *, const char *)()
4368 format_handler(buffer_appender<Char> p_out, basic_string_view<Char> str,
4369 basic_format_args<buffer_context<Char>> p_args,
4370 locale_ref p_loc)
4371 : parse_context(str), context(p_out, p_args, p_loc) {}
4372
4373 void on_text(const Char* begin, const Char* end) {
>>> CID 434524: Integer handling issues (NEGATIVE_RETURNS)
>>> "fmt::v10::detail::to_unsigned(end - begin)" is passed to a parameter that cannot be negative.
4374 auto text = basic_string_view<Char>(begin, to_unsigned(end - begin));
4375 context.advance_to(write<Char>(context.out(), text));
4376 }
4377
4378 FMT_CONSTEXPR auto on_arg_id() -> int {
4379 return parse_context.next_arg_id();
** CID 434520: Memory - corruptions (OVERRUN)
________________________________________________________________________________________________________
*** CID 434520: Memory - corruptions (OVERRUN)
/home/runner/work/doxygen/doxygen/deps/spdlog/include/spdlog/fmt/bundled/format-inl.h: 1205 in fmt::v10::detail::dragonbox::shorter_interval_case<float>(int)()
1199 // Compute k and beta
1200 const int minus_k = floor_log10_pow2_minus_log10_4_over_3(exponent);
1201 const int beta = exponent + floor_log2_pow10(-minus_k);
1202
1203 // Compute xi and zi
1204 using cache_entry_type = typename cache_accessor<T>::cache_entry_type;
>>> CID 434520: Memory - corruptions (OVERRUN)
>>> Overrunning callee's array of size 78 by passing argument "-minus_k" (which evaluates to 899) in call to "get_cached_power".
1205 const cache_entry_type cache = cache_accessor<T>::get_cached_power(-minus_k);
1206
1207 auto xi = cache_accessor<T>::compute_left_endpoint_for_shorter_interval_case(
1208 cache, beta);
1209 auto zi = cache_accessor<T>::compute_right_endpoint_for_shorter_interval_case(
1210 cache, beta);
** CID 434519: Integer handling issues (BAD_SHIFT)
/home/runner/work/doxygen/doxygen/deps/spdlog/include/spdlog/fmt/bundled/format.h: 2902 in fmt::v10::detail::bigint::operator <<=(int)()
________________________________________________________________________________________________________
*** CID 434519: Integer handling issues (BAD_SHIFT)
/home/runner/work/doxygen/doxygen/deps/spdlog/include/spdlog/fmt/bundled/format.h: 2902 in fmt::v10::detail::bigint::operator <<=(int)()
2896 exp_ += shift / bigit_bits;
2897 shift %= bigit_bits;
2898 if (shift == 0) return *this;
2899 bigit carry = 0;
2900 for (size_t i = 0, n = bigits_.size(); i < n; ++i) {
2901 bigit c = bigits_[i] >> (bigit_bits - shift);
>>> CID 434519: Integer handling issues (BAD_SHIFT)
>>> In expression "this->bigits_[i] << shift", shifting by a negative amount has undefined behavior. The shift amount, "shift", is no more than -1.
2902 bigits_[i] = (bigits_[i] << shift) + carry;
2903 carry = c;
2904 }
2905 if (carry != 0) bigits_.push_back(carry);
2906 return *this;
2907 }
** CID 434518: Integer handling issues (NEGATIVE_RETURNS)
________________________________________________________________________________________________________
*** CID 434518: Integer handling issues (NEGATIVE_RETURNS)
/home/runner/work/doxygen/doxygen/deps/spdlog/include/spdlog/fmt/bundled/format.h: 2795 in fmt::v10::detail::bigint::operator [](int)()
2789 int exp_;
2790
2791 FMT_CONSTEXPR20 auto operator[](int index) const -> bigit {
2792 return bigits_[to_unsigned(index)];
2793 }
2794 FMT_CONSTEXPR20 auto operator[](int index) -> bigit& {
>>> CID 434518: Integer handling issues (NEGATIVE_RETURNS)
>>> "fmt::v10::detail::to_unsigned(index)" is passed to a parameter that cannot be negative.
2795 return bigits_[to_unsigned(index)];
2796 }
2797
2798 static constexpr const int bigit_bits = num_bits<bigit>();
2799
2800 friend struct formatter<bigint>;
** CID 432785: (NEGATIVE_RETURNS)
________________________________________________________________________________________________________
*** CID 432785: (NEGATIVE_RETURNS)
/home/runner/work/doxygen/doxygen/deps/spdlog/include/spdlog/fmt/bundled/format.h: 672 in fmt::v10::detail::for_each_codepoint<fmt::v10::detail::utf8_to_utf16::utf8_to_utf16(fmt::v10::basic_string_view<char>)::[lambda(unsigned int, fmt::v10::basic_string_view<char>) (instance 1)]>(fmt::v10::basic_string_view<char>, T1)::[lambda(const char *, const char *) (instance 1)]::operator ()(const char *, const char *) const()
666 template <typename F>
667 FMT_CONSTEXPR void for_each_codepoint(string_view s, F f) {
668 auto decode = [f](const char* buf_ptr, const char* ptr) {
669 auto cp = uint32_t();
670 auto error = 0;
671 auto end = utf8_decode(buf_ptr, &cp, &error);
>>> CID 432785: (NEGATIVE_RETURNS)
>>> "error ? 1UL : fmt::v10::detail::to_unsigned(end - buf_ptr)" is passed to a parameter that cannot be negative.
672 bool result = f(error ? invalid_code_point : cp,
673 string_view(ptr, error ? 1 : to_unsigned(end - buf_ptr)));
674 return result ? (error ? buf_ptr + 1 : end) : nullptr;
675 };
676 auto p = s.data();
677 const size_t block_size = 4; // utf8_decode always reads blocks of 4 chars.
/home/runner/work/doxygen/doxygen/deps/spdlog/include/spdlog/fmt/bundled/format.h: 672 in fmt::v10::detail::for_each_codepoint<fmt::v10::detail::find_escape(const char *, const char *)::[lambda(unsigned int, fmt::v10::basic_string_view<char>) (instance 1)]>(fmt::v10::basic_string_view<char>, T1)::[lambda(const char *, const char *) (instance 1)]::operator ()(const char *, const char *) const()
666 template <typename F>
667 FMT_CONSTEXPR void for_each_codepoint(string_view s, F f) {
668 auto decode = [f](const char* buf_ptr, const char* ptr) {
669 auto cp = uint32_t();
670 auto error = 0;
671 auto end = utf8_decode(buf_ptr, &cp, &error);
>>> CID 432785: (NEGATIVE_RETURNS)
>>> "error ? 1UL : fmt::v10::detail::to_unsigned(end - buf_ptr)" is passed to a parameter that cannot be negative.
672 bool result = f(error ? invalid_code_point : cp,
673 string_view(ptr, error ? 1 : to_unsigned(end - buf_ptr)));
674 return result ? (error ? buf_ptr + 1 : end) : nullptr;
675 };
676 auto p = s.data();
677 const size_t block_size = 4; // utf8_decode always reads blocks of 4 chars.
/home/runner/work/doxygen/doxygen/deps/spdlog/include/spdlog/fmt/bundled/format.h: 672 in fmt::v10::detail::for_each_codepoint<fmt::v10::detail::code_point_index(fmt::v10::basic_string_view<char>, unsigned long)::[lambda(unsigned int, fmt::v10::basic_string_view<char>) (instance 1)]>(fmt::v10::basic_string_view<char>, T1)::[lambda(const char *, const char *) (instance 1)]::operator ()(const char *, const char *) const()
666 template <typename F>
667 FMT_CONSTEXPR void for_each_codepoint(string_view s, F f) {
668 auto decode = [f](const char* buf_ptr, const char* ptr) {
669 auto cp = uint32_t();
670 auto error = 0;
671 auto end = utf8_decode(buf_ptr, &cp, &error);
>>> CID 432785: (NEGATIVE_RETURNS)
>>> "error ? 1UL : fmt::v10::detail::to_unsigned(end - buf_ptr)" is passed to a parameter that cannot be negative.
672 bool result = f(error ? invalid_code_point : cp,
673 string_view(ptr, error ? 1 : to_unsigned(end - buf_ptr)));
674 return result ? (error ? buf_ptr + 1 : end) : nullptr;
675 };
676 auto p = s.data();
677 const size_t block_size = 4; // utf8_decode always reads blocks of 4 chars.
/home/runner/work/doxygen/doxygen/deps/spdlog/include/spdlog/fmt/bundled/format.h: 672 in fmt::v10::detail::for_each_codepoint<fmt::v10::detail::compute_width(fmt::v10::basic_string_view<char>)::count_code_points>(fmt::v10::basic_string_view<char>, T1)::[lambda(const char *, const char *) (instance 1)]::operator ()(const char *, const char *) const()
666 template <typename F>
667 FMT_CONSTEXPR void for_each_codepoint(string_view s, F f) {
668 auto decode = [f](const char* buf_ptr, const char* ptr) {
669 auto cp = uint32_t();
670 auto error = 0;
671 auto end = utf8_decode(buf_ptr, &cp, &error);
>>> CID 432785: (NEGATIVE_RETURNS)
>>> "error ? 1UL : fmt::v10::detail::to_unsigned(end - buf_ptr)" is passed to a parameter that cannot be negative.
672 bool result = f(error ? invalid_code_point : cp,
673 string_view(ptr, error ? 1 : to_unsigned(end - buf_ptr)));
674 return result ? (error ? buf_ptr + 1 : end) : nullptr;
675 };
676 auto p = s.data();
677 const size_t block_size = 4; // utf8_decode always reads blocks of 4 chars.
** CID 432681: Integer handling issues (NEGATIVE_RETURNS)
________________________________________________________________________________________________________
*** CID 432681: Integer handling issues (NEGATIVE_RETURNS)
/home/runner/work/doxygen/doxygen/deps/spdlog/include/spdlog/fmt/bundled/core.h: 704 in fmt::v10::basic_format_parse_context<char>::advance_to(const char *)()
698 Returns an iterator past the end of the format string range being parsed.
699 */
700 constexpr auto end() const noexcept -> iterator { return format_str_.end(); }
701
702 /** Advances the begin iterator to ``it``. */
703 FMT_CONSTEXPR void advance_to(iterator it) {
>>> CID 432681: Integer handling issues (NEGATIVE_RETURNS)
>>> "fmt::v10::detail::to_unsigned(it - this->begin())" is passed to a parameter that cannot be negative.
704 format_str_.remove_prefix(detail::to_unsigned(it - begin()));
705 }
706
707 /**
708 Reports an error if using the manual argument indexing; otherwise returns
709 the next argument index and switches to the automatic indexing.
** CID 432542: Integer handling issues (NEGATIVE_RETURNS)
________________________________________________________________________________________________________
*** CID 432542: Integer handling issues (NEGATIVE_RETURNS)
/home/runner/work/doxygen/doxygen/deps/spdlog/include/spdlog/fmt/bundled/format.h: 1813 in fmt::v10::detail::find_escape(const char *, const char *)()
1807 }
1808
1809 inline auto find_escape(const char* begin, const char* end)
1810 -> find_escape_result<char> {
1811 if (!is_utf8()) return find_escape<char>(begin, end);
1812 auto result = find_escape_result<char>{end, nullptr, 0};
>>> CID 432542: Integer handling issues (NEGATIVE_RETURNS)
>>> "fmt::v10::detail::to_unsigned(end - begin)" is passed to a parameter that cannot be negative.
1813 for_each_codepoint(string_view(begin, to_unsigned(end - begin)),
1814 [&](uint32_t cp, string_view sv) {
1815 if (needs_escape(cp)) {
1816 result = {sv.begin(), sv.end(), cp};
1817 return false;
1818 }
** CID 432501: (NEGATIVE_RETURNS)
________________________________________________________________________________________________________
*** CID 432501: (NEGATIVE_RETURNS)
/home/runner/work/doxygen/doxygen/deps/spdlog/include/spdlog/fmt/bundled/format.h: 1357 in fmt::v10::detail::format_uint<(unsigned int)4, char, fmt::v10::appender, unsigned int>(T3, T4, int, bool)()
1351 return end;
1352 }
1353
1354 template <unsigned BASE_BITS, typename Char, typename It, typename UInt>
1355 FMT_CONSTEXPR inline auto format_uint(It out, UInt value, int num_digits,
1356 bool upper = false) -> It {
>>> CID 432501: (NEGATIVE_RETURNS)
>>> "fmt::v10::detail::to_unsigned(num_digits)" is passed to a parameter that cannot be negative.
1357 if (auto ptr = to_pointer<Char>(out, to_unsigned(num_digits))) {
1358 format_uint<BASE_BITS>(ptr, value, num_digits, upper);
1359 return out;
1360 }
1361 // Buffer should be large enough to hold all digits (digits / BASE_BITS + 1).
1362 char buffer[num_bits<UInt>() / BASE_BITS + 1] = {};
/home/runner/work/doxygen/doxygen/deps/spdlog/include/spdlog/fmt/bundled/format.h: 1357 in fmt::v10::detail::format_uint<(unsigned int)4, char, fmt::v10::appender, unsigned __int128>(T3, T4, int, bool)()
1351 return end;
1352 }
1353
1354 template <unsigned BASE_BITS, typename Char, typename It, typename UInt>
1355 FMT_CONSTEXPR inline auto format_uint(It out, UInt value, int num_digits,
1356 bool upper = false) -> It {
>>> CID 432501: (NEGATIVE_RETURNS)
>>> "fmt::v10::detail::to_unsigned(num_digits)" is passed to a parameter that cannot be negative.
1357 if (auto ptr = to_pointer<Char>(out, to_unsigned(num_digits))) {
1358 format_uint<BASE_BITS>(ptr, value, num_digits, upper);
1359 return out;
1360 }
1361 // Buffer should be large enough to hold all digits (digits / BASE_BITS + 1).
1362 char buffer[num_bits<UInt>() / BASE_BITS + 1] = {};
/home/runner/work/doxygen/doxygen/deps/spdlog/include/spdlog/fmt/bundled/format.h: 1357 in fmt::v10::detail::format_uint<(unsigned int)1, char, fmt::v10::appender, unsigned int>(T3, T4, int, bool)()
1351 return end;
1352 }
1353
1354 template <unsigned BASE_BITS, typename Char, typename It, typename UInt>
1355 FMT_CONSTEXPR inline auto format_uint(It out, UInt value, int num_digits,
1356 bool upper = false) -> It {
>>> CID 432501: (NEGATIVE_RETURNS)
>>> "fmt::v10::detail::to_unsigned(num_digits)" is passed to a parameter that cannot be negative.
1357 if (auto ptr = to_pointer<Char>(out, to_unsigned(num_digits))) {
1358 format_uint<BASE_BITS>(ptr, value, num_digits, upper);
1359 return out;
1360 }
1361 // Buffer should be large enough to hold all digits (digits / BASE_BITS + 1).
1362 char buffer[num_bits<UInt>() / BASE_BITS + 1] = {};
/home/runner/work/doxygen/doxygen/deps/spdlog/include/spdlog/fmt/bundled/format.h: 1357 in fmt::v10::detail::format_uint<(unsigned int)1, char, fmt::v10::appender, unsigned __int128>(T3, T4, int, bool)()
1351 return end;
1352 }
1353
1354 template <unsigned BASE_BITS, typename Char, typename It, typename UInt>
1355 FMT_CONSTEXPR inline auto format_uint(It out, UInt value, int num_digits,
1356 bool upper = false) -> It {
>>> CID 432501: (NEGATIVE_RETURNS)
>>> "fmt::v10::detail::to_unsigned(num_digits)" is passed to a parameter that cannot be negative.
1357 if (auto ptr = to_pointer<Char>(out, to_unsigned(num_digits))) {
1358 format_uint<BASE_BITS>(ptr, value, num_digits, upper);
1359 return out;
1360 }
1361 // Buffer should be large enough to hold all digits (digits / BASE_BITS + 1).
1362 char buffer[num_bits<UInt>() / BASE_BITS + 1] = {};
/home/runner/work/doxygen/doxygen/deps/spdlog/include/spdlog/fmt/bundled/format.h: 1357 in fmt::v10::detail::format_uint<(unsigned int)1, char, fmt::v10::appender, unsigned long>(T3, T4, int, bool)()
1351 return end;
1352 }
1353
1354 template <unsigned BASE_BITS, typename Char, typename It, typename UInt>
1355 FMT_CONSTEXPR inline auto format_uint(It out, UInt value, int num_digits,
1356 bool upper = false) -> It {
>>> CID 432501: (NEGATIVE_RETURNS)
>>> "fmt::v10::detail::to_unsigned(num_digits)" is passed to a parameter that cannot be negative.
1357 if (auto ptr = to_pointer<Char>(out, to_unsigned(num_digits))) {
1358 format_uint<BASE_BITS>(ptr, value, num_digits, upper);
1359 return out;
1360 }
1361 // Buffer should be large enough to hold all digits (digits / BASE_BITS + 1).
1362 char buffer[num_bits<UInt>() / BASE_BITS + 1] = {};
/home/runner/work/doxygen/doxygen/deps/spdlog/include/spdlog/fmt/bundled/format.h: 1357 in fmt::v10::detail::format_uint<(unsigned int)3, char, fmt::v10::appender, unsigned long>(T3, T4, int, bool)()
1351 return end;
1352 }
1353
1354 template <unsigned BASE_BITS, typename Char, typename It, typename UInt>
1355 FMT_CONSTEXPR inline auto format_uint(It out, UInt value, int num_digits,
1356 bool upper = false) -> It {
>>> CID 432501: (NEGATIVE_RETURNS)
>>> "fmt::v10::detail::to_unsigned(num_digits)" is passed to a parameter that cannot be negative.
1357 if (auto ptr = to_pointer<Char>(out, to_unsigned(num_digits))) {
1358 format_uint<BASE_BITS>(ptr, value, num_digits, upper);
1359 return out;
1360 }
1361 // Buffer should be large enough to hold all digits (digits / BASE_BITS + 1).
1362 char buffer[num_bits<UInt>() / BASE_BITS + 1] = {};
/home/runner/work/doxygen/doxygen/deps/spdlog/include/spdlog/fmt/bundled/format.h: 1357 in fmt::v10::detail::format_uint<(unsigned int)3, char, fmt::v10::appender, unsigned int>(T3, T4, int, bool)()
1351 return end;
1352 }
1353
1354 template <unsigned BASE_BITS, typename Char, typename It, typename UInt>
1355 FMT_CONSTEXPR inline auto format_uint(It out, UInt value, int num_digits,
1356 bool upper = false) -> It {
>>> CID 432501: (NEGATIVE_RETURNS)
>>> "fmt::v10::detail::to_unsigned(num_digits)" is passed to a parameter that cannot be negative.
1357 if (auto ptr = to_pointer<Char>(out, to_unsigned(num_digits))) {
1358 format_uint<BASE_BITS>(ptr, value, num_digits, upper);
1359 return out;
1360 }
1361 // Buffer should be large enough to hold all digits (digits / BASE_BITS + 1).
1362 char buffer[num_bits<UInt>() / BASE_BITS + 1] = {};
/home/runner/work/doxygen/doxygen/deps/spdlog/include/spdlog/fmt/bundled/format.h: 1357 in fmt::v10::detail::format_uint<(unsigned int)3, char, fmt::v10::appender, unsigned __int128>(T3, T4, int, bool)()
1351 return end;
1352 }
1353
1354 template <unsigned BASE_BITS, typename Char, typename It, typename UInt>
1355 FMT_CONSTEXPR inline auto format_uint(It out, UInt value, int num_digits,
1356 bool upper = false) -> It {
>>> CID 432501: (NEGATIVE_RETURNS)
>>> "fmt::v10::detail::to_unsigned(num_digits)" is passed to a parameter that cannot be negative.
1357 if (auto ptr = to_pointer<Char>(out, to_unsigned(num_digits))) {
1358 format_uint<BASE_BITS>(ptr, value, num_digits, upper);
1359 return out;
1360 }
1361 // Buffer should be large enough to hold all digits (digits / BASE_BITS + 1).
1362 char buffer[num_bits<UInt>() / BASE_BITS + 1] = {};
/home/runner/work/doxygen/doxygen/deps/spdlog/include/spdlog/fmt/bundled/format.h: 1357 in fmt::v10::detail::format_uint<(unsigned int)4, char, fmt::v10::appender, unsigned long>(T3, T4, int, bool)()
1351 return end;
1352 }
1353
1354 template <unsigned BASE_BITS, typename Char, typename It, typename UInt>
1355 FMT_CONSTEXPR inline auto format_uint(It out, UInt value, int num_digits,
1356 bool upper = false) -> It {
>>> CID 432501: (NEGATIVE_RETURNS)
>>> "fmt::v10::detail::to_unsigned(num_digits)" is passed to a parameter that cannot be negative.
1357 if (auto ptr = to_pointer<Char>(out, to_unsigned(num_digits))) {
1358 format_uint<BASE_BITS>(ptr, value, num_digits, upper);
1359 return out;
1360 }
1361 // Buffer should be large enough to hold all digits (digits / BASE_BITS + 1).
1362 char buffer[num_bits<UInt>() / BASE_BITS + 1] = {};
** CID 432379: Integer handling issues (NEGATIVE_RETURNS)
________________________________________________________________________________________________________
*** CID 432379: Integer handling issues (NEGATIVE_RETURNS)
/home/runner/work/doxygen/doxygen/deps/spdlog/include/spdlog/fmt/bundled/core.h: 2475 in fmt::v10::detail::parse_format_specs<char>(const T1 *, const T1 *, fmt::v10::detail::dynamic_format_specs<T1> &, fmt::v10::basic_format_parse_context<T1> &, fmt::v10::detail::type)()
2469 if (*begin == '{') {
2470 throw_format_error("invalid fill character '{'");
2471 return begin;
2472 }
2473 auto align = parse_align(to_ascii(*fill_end));
2474 enter_state(state::align, align != align::none);
>>> CID 432379: Integer handling issues (NEGATIVE_RETURNS)
>>> "fmt::v10::detail::to_unsigned(fill_end - begin)" is passed to a parameter that cannot be negative.
2475 specs.fill = {begin, to_unsigned(fill_end - begin)};
2476 specs.align = align;
2477 begin = fill_end + 1;
2478 }
2479 }
2480 if (begin == end) return begin;
** CID 432239: (NEGATIVE_RETURNS)
________________________________________________________________________________________________________
*** CID 432239: (NEGATIVE_RETURNS)
/home/runner/work/doxygen/doxygen/deps/spdlog/include/spdlog/fmt/bundled/core.h: 2235 in fmt::v10::detail::do_parse_arg_id<char, fmt::v10::detail::dynamic_spec_id_handler<char> &>(const T1 *, const T1 *, T2 &&)()
2229 return begin;
2230 }
2231 auto it = begin;
2232 do {
2233 ++it;
2234 } while (it != end && (is_name_start(*it) || ('0' <= *it && *it <= '9')));
>>> CID 432239: (NEGATIVE_RETURNS)
>>> "fmt::v10::detail::to_unsigned(it - begin)" is passed to a parameter that cannot be negative.
2235 handler.on_name({begin, to_unsigned(it - begin)});
2236 return it;
2237 }
2238
2239 template <typename Char, typename Handler>
2240 FMT_CONSTEXPR FMT_INLINE auto parse_arg_id(const Char* begin, const Char* end,
/home/runner/work/doxygen/doxygen/deps/spdlog/include/spdlog/fmt/bundled/core.h: 2235 in fmt::v10::detail::do_parse_arg_id<char, fmt::v10::detail::parse_replacement_field<char, fmt::v10::detail::format_string_checker<char, fmt::v10::basic_string_view<char>, char [3]> &>(const T1 *, const T1 *, T2 &&)::id_adapter &>(const T1 *, const T1 *, T2 &&)()
2229 return begin;
2230 }
2231 auto it = begin;
2232 do {
2233 ++it;
2234 } while (it != end && (is_name_start(*it) || ('0' <= *it && *it <= '9')));
>>> CID 432239: (NEGATIVE_RETURNS)
>>> "fmt::v10::detail::to_unsigned(it - begin)" is passed to a parameter that cannot be negative.
2235 handler.on_name({begin, to_unsigned(it - begin)});
2236 return it;
2237 }
2238
2239 template <typename Char, typename Handler>
2240 FMT_CONSTEXPR FMT_INLINE auto parse_arg_id(const Char* begin, const Char* end,
/home/runner/work/doxygen/doxygen/deps/spdlog/include/spdlog/fmt/bundled/core.h: 2235 in fmt::v10::detail::do_parse_arg_id<char, fmt::v10::detail::parse_replacement_field<char, fmt::v10::detail::format_string_checker<char, int> &>(const T1 *, const T1 *, T2 &&)::id_adapter &>(const T1 *, const T1 *, T2 &&)()
2229 return begin;
2230 }
2231 auto it = begin;
2232 do {
2233 ++it;
2234 } while (it != end && (is_name_start(*it) || ('0' <= *it && *it <= '9')));
>>> CID 432239: (NEGATIVE_RETURNS)
>>> "fmt::v10::detail::to_unsigned(it - begin)" is passed to a parameter that cannot be negative.
2235 handler.on_name({begin, to_unsigned(it - begin)});
2236 return it;
2237 }
2238
2239 template <typename Char, typename Handler>
2240 FMT_CONSTEXPR FMT_INLINE auto parse_arg_id(const Char* begin, const Char* end,
/home/runner/work/doxygen/doxygen/deps/spdlog/include/spdlog/fmt/bundled/core.h: 2235 in fmt::v10::detail::do_parse_arg_id<char, fmt::v10::detail::parse_replacement_field<char, fmt::v10::detail::format_string_checker<char> &>(const T1 *, const T1 *, T2 &&)::id_adapter &>(const T1 *, const T1 *, T2 &&)()
2229 return begin;
2230 }
2231 auto it = begin;
2232 do {
2233 ++it;
2234 } while (it != end && (is_name_start(*it) || ('0' <= *it && *it <= '9')));
>>> CID 432239: (NEGATIVE_RETURNS)
>>> "fmt::v10::detail::to_unsigned(it - begin)" is passed to a parameter that cannot be negative.
2235 handler.on_name({begin, to_unsigned(it - begin)});
2236 return it;
2237 }
2238
2239 template <typename Char, typename Handler>
2240 FMT_CONSTEXPR FMT_INLINE auto parse_arg_id(const Char* begin, const Char* end,
/home/runner/work/doxygen/doxygen/deps/spdlog/include/spdlog/fmt/bundled/core.h: 2235 in fmt::v10::detail::do_parse_arg_id<char, fmt::v10::detail::parse_replacement_field<char, fmt::v10::detail::format_string_checker<char, const char *, const char *, int> &>(const T1 *, const T1 *, T2 &&)::id_adapter &>(const T1 *, const T1 *, T2 &&)()
2229 return begin;
2230 }
2231 auto it = begin;
2232 do {
2233 ++it;
2234 } while (it != end && (is_name_start(*it) || ('0' <= *it && *it <= '9')));
>>> CID 432239: (NEGATIVE_RETURNS)
>>> "fmt::v10::detail::to_unsigned(it - begin)" is passed to a parameter that cannot be negative.
2235 handler.on_name({begin, to_unsigned(it - begin)});
2236 return it;
2237 }
2238
2239 template <typename Char, typename Handler>
2240 FMT_CONSTEXPR FMT_INLINE auto parse_arg_id(const Char* begin, const Char* end,
/home/runner/work/doxygen/doxygen/deps/spdlog/include/spdlog/fmt/bundled/core.h: 2235 in fmt::v10::detail::do_parse_arg_id<char, fmt::v10::detail::parse_replacement_field<char, fmt::v10::detail::format_string_checker<char, char [7], int> &>(const T1 *, const T1 *, T2 &&)::id_adapter &>(const T1 *, const T1 *, T2 &&)()
2229 return begin;
2230 }
2231 auto it = begin;
2232 do {
2233 ++it;
2234 } while (it != end && (is_name_start(*it) || ('0' <= *it && *it <= '9')));
>>> CID 432239: (NEGATIVE_RETURNS)
>>> "fmt::v10::detail::to_unsigned(it - begin)" is passed to a parameter that cannot be negative.
2235 handler.on_name({begin, to_unsigned(it - begin)});
2236 return it;
2237 }
2238
2239 template <typename Char, typename Handler>
2240 FMT_CONSTEXPR FMT_INLINE auto parse_arg_id(const Char* begin, const Char* end,
** CID 419897: (UNCAUGHT_EXCEPT)
/home/runner/work/doxygen/doxygen/deps/spdlog/include/spdlog/fmt/bundled/format-inl.h: 43 in fmt::v10::detail::format_error_code(fmt::v10::detail::buffer<char> &, int, fmt::v10::basic_string_view<char>)()
/home/runner/work/doxygen/doxygen/deps/spdlog/include/spdlog/fmt/bundled/format-inl.h: 43 in fmt::v10::detail::format_error_code(fmt::v10::detail::buffer<char> &, int, fmt::v10::basic_string_view<char>)()
________________________________________________________________________________________________________
*** CID 419897: (UNCAUGHT_EXCEPT)
/home/runner/work/doxygen/doxygen/deps/spdlog/include/spdlog/fmt/bundled/format-inl.h: 43 in fmt::v10::detail::format_error_code(fmt::v10::detail::buffer<char> &, int, fmt::v10::basic_string_view<char>)()
37 }
38
39 FMT_FUNC void throw_format_error(const char* message) {
40 FMT_THROW(format_error(message));
41 }
42
>>> CID 419897: (UNCAUGHT_EXCEPT)
>>> An exception of type "fmt::v10::format_error" is thrown but the exception specification "noexcept" doesn't allow it to be thrown. This will result in a call to terminate().
43 FMT_FUNC void format_error_code(detail::buffer<char>& out, int error_code,
44 string_view message) noexcept {
45 // Report error code making sure that the output fits into
46 // inline_buffer_size to avoid dynamic memory allocation and potential
47 // bad_alloc.
48 out.try_resize(0);
/home/runner/work/doxygen/doxygen/deps/spdlog/include/spdlog/fmt/bundled/format-inl.h: 43 in fmt::v10::detail::format_error_code(fmt::v10::detail::buffer<char> &, int, fmt::v10::basic_string_view<char>)()
37 }
38
39 FMT_FUNC void throw_format_error(const char* message) {
40 FMT_THROW(format_error(message));
41 }
42
>>> CID 419897: (UNCAUGHT_EXCEPT)
>>> An exception of type "fmt::v10::format_error" is thrown but the exception specification "noexcept" doesn't allow it to be thrown. This will result in a call to terminate().
43 FMT_FUNC void format_error_code(detail::buffer<char>& out, int error_code,
44 string_view message) noexcept {
45 // Report error code making sure that the output fits into
46 // inline_buffer_size to avoid dynamic memory allocation and potential
47 // bad_alloc.
48 out.try_resize(0);
I think these warnings should be evaluated and probably be fixed.