@@ -31,7 +31,15 @@ MUJIN_LOGGER("mujin.controllerclientcpp");
31
31
#define CURL_OPTION_SAVE_SETTER (curl, curlopt, curvalue, newvalue ) CURL_OPTION_SAVER(curl, curlopt, curvalue); CURL_OPTION_SETTER(curl, curlopt, newvalue)
32
32
#define CURL_INFO_GETTER (curl, curlinfo, outvalue ) CHECKCURLCODE(curl_easy_getinfo(curl, curlinfo, outvalue), " curl_easy_getinfo " # curlinfo)
33
33
#define CURL_PERFORM (curl ) CHECKCURLCODE(curl_easy_perform(curl), " curl_easy_perform" )
34
- #define CURL_FORM_RELEASER (form ) boost::shared_ptr<void > __curlformreleaser ## form((void *)0 , boost::bind(boost::function<void (decltype (form))>(curl_formfree), form))
34
+
35
+ struct CURLFormReleaser {
36
+ struct curl_httppost *& form;
37
+
38
+ ~CURLFormReleaser ()
39
+ {
40
+ curl_formfree (std::exchange (form, nullptr ));
41
+ }
42
+ };
35
43
36
44
namespace mujinclient {
37
45
@@ -1910,7 +1918,7 @@ void ControllerClientImpl::_UploadFileToControllerViaForm(std::istream& inputStr
1910
1918
// prepare form
1911
1919
struct curl_httppost *formpost = NULL ;
1912
1920
struct curl_httppost *lastptr = NULL ;
1913
- CURL_FORM_RELEASER ( formpost) ;
1921
+ CURLFormReleaser curlFormReleaser{ formpost} ;
1914
1922
curl_formadd (&formpost, &lastptr,
1915
1923
CURLFORM_COPYNAME, " files[]" ,
1916
1924
CURLFORM_FILENAME, filename.empty () ? " unused" : filename.c_str (),
@@ -1958,7 +1966,7 @@ void ControllerClientImpl::_UploadDataToControllerViaForm(const void* data, size
1958
1966
// prepare form
1959
1967
struct curl_httppost *formpost = NULL ;
1960
1968
struct curl_httppost *lastptr = NULL ;
1961
- CURL_FORM_RELEASER ( formpost) ;
1969
+ CURLFormReleaser curlFormReleaser{ formpost} ;
1962
1970
curl_formadd (&formpost, &lastptr,
1963
1971
CURLFORM_PTRNAME, " files[]" ,
1964
1972
CURLFORM_BUFFER, filename.empty () ? " unused" : filename.c_str (),
@@ -2091,7 +2099,7 @@ void ControllerClientImpl::CreateLogEntries(const std::vector<LogEntryPtr>& logE
2091
2099
// prepare the form
2092
2100
struct curl_httppost *formpost = NULL ;
2093
2101
struct curl_httppost *lastptr = NULL ;
2094
- CURL_FORM_RELEASER ( formpost) ;
2102
+ CURLFormReleaser curlFormReleaser{ formpost} ;
2095
2103
2096
2104
rapidjson::StringBuffer& rRequestStringBuffer = _rRequestStringBufferCache;
2097
2105
rapidjson::Writer<rapidjson::StringBuffer> writer (rRequestStringBuffer);
0 commit comments