From 3b3152ef3585aa0b3907830260bc4148e30f0568 Mon Sep 17 00:00:00 2001 From: Nick Logozzo Date: Sun, 6 Jul 2025 17:02:06 -0400 Subject: [PATCH 1/2] fix: Calling empty callbacks --- include/cpr/callback.h | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/include/cpr/callback.h b/include/cpr/callback.h index b20ce2ad0..b6a66c0f6 100644 --- a/include/cpr/callback.h +++ b/include/cpr/callback.h @@ -18,6 +18,10 @@ class ReadCallback { ReadCallback(std::function p_callback, intptr_t p_userdata = 0) : userdata(p_userdata), size{-1}, callback{std::move(p_callback)} {} ReadCallback(cpr_off_t p_size, std::function p_callback, intptr_t p_userdata = 0) : userdata(p_userdata), size{p_size}, callback{std::move(p_callback)} {} bool operator()(char* buffer, size_t& buffer_size) const { + if(!callback) + { + return true; + } return callback(buffer, buffer_size, userdata); } @@ -32,6 +36,10 @@ class HeaderCallback { // NOLINTNEXTLINE(google-explicit-constructor, hicpp-explicit-conversions) HeaderCallback(std::function p_callback, intptr_t p_userdata = 0) : userdata(p_userdata), callback(std::move(p_callback)) {} bool operator()(const std::string_view& header) const { + if(!callback) + { + return true; + } return callback(header, userdata); } @@ -45,6 +53,10 @@ class WriteCallback { // NOLINTNEXTLINE(google-explicit-constructor, hicpp-explicit-conversions) WriteCallback(std::function p_callback, intptr_t p_userdata = 0) : userdata(p_userdata), callback(std::move(p_callback)) {} bool operator()(const std::string_view& data) const { + if(!callback) + { + return true; + } return callback(data, userdata); } @@ -58,6 +70,10 @@ class ProgressCallback { // NOLINTNEXTLINE(google-explicit-constructor, hicpp-explicit-conversions) ProgressCallback(std::function p_callback, intptr_t p_userdata = 0) : userdata(p_userdata), callback(std::move(p_callback)) {} bool operator()(cpr_pf_arg_t downloadTotal, cpr_pf_arg_t downloadNow, cpr_pf_arg_t uploadTotal, cpr_pf_arg_t uploadNow) const { + if(!callback) + { + return true; + } return callback(downloadTotal, downloadNow, uploadTotal, uploadNow, userdata); } @@ -80,6 +96,10 @@ class DebugCallback { // NOLINTNEXTLINE(google-explicit-constructor, hicpp-explicit-conversions) DebugCallback(std::function p_callback, intptr_t p_userdata = 0) : userdata(p_userdata), callback(std::move(p_callback)) {} void operator()(InfoType type, std::string data) const { + if(!callback) + { + return true; + } callback(type, std::move(data), userdata); } From 6b5fa635353f14a135103014895f701d0b81d9d9 Mon Sep 17 00:00:00 2001 From: Nick Logozzo Date: Sun, 6 Jul 2025 17:08:45 -0400 Subject: [PATCH 2/2] Update callback.h --- include/cpr/callback.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/cpr/callback.h b/include/cpr/callback.h index b6a66c0f6..bfa40a2bb 100644 --- a/include/cpr/callback.h +++ b/include/cpr/callback.h @@ -98,7 +98,7 @@ class DebugCallback { void operator()(InfoType type, std::string data) const { if(!callback) { - return true; + return; } callback(type, std::move(data), userdata); }