fix memory leak in url encode and decode

This commit is contained in:
zhangzifa
2019-02-19 16:55:25 +08:00
committed by Jackson Tian
parent fdc3251134
commit 6a5f788210
3 changed files with 4 additions and 3 deletions

View File

@@ -19,7 +19,6 @@
#include "EcsMetadataFetcher.h"
#include <chrono>
#include <iomanip>
#include <chrono>
#include <mutex>
#include <sstream>

View File

@@ -49,6 +49,7 @@ std::string AlibabaCloud::UrlEncode(const std::string & src) {
char *output = curl_easy_escape(curl, src.c_str(), src.size());
std::string result(output);
curl_free(output);
curl_easy_cleanup(curl);
return result;
}
@@ -58,6 +59,7 @@ std::string AlibabaCloud::UrlDecode(const std::string & src) {
char *output = curl_easy_unescape(curl, src.c_str(), src.size(), &outlength);
std::string result(output, outlength);
curl_free(output);
curl_easy_cleanup(curl);
return result;
}

View File

@@ -25,14 +25,14 @@ namespace {
request.setDomain("nlp.cn-shanghai.aliyuncs.com");
request.setResourcePath("/nlp/api/wordsegment/general");
request.setHttpMethod(HttpRequest::Post);
const char * data = "{\"lang\":\"ZH\",\"text\":\"Iphone is a bad choice 专用数据线\"}";
const char * data = "{\"lang\":\"ZH\",\"text\":\"Iphone is a good choice 专用数据线\"}";
request.setContent(data, strlen(data));
request.setHeaderParameter("Content-Type", "application/json;chrset=utf-8");
request.setVersion("2018-04-08");
auto outcome = client.commonResponse(request);
EXPECT_TRUE(outcome.error().errorCode().empty());
const std::string expected = "{\"data\":[{\"id\":0,\"word\":\"Iphone\"},{\"id\":1,\"word\":\" \"},{\"id\":2,\"word\":\"is\"},{\"id\":3,\"word\":\" \"},{\"id\":4,\"word\":\"a\"},{\"id\":5,\"word\":\" \"},{\"id\":6,\"word\":\"bad\"},{\"id\":7,\"word\":\" \"},{\"id\":8,\"word\":\"choice\"},{\"id\":9,\"word\":\" \"},{\"id\":10,\"word\":\"专用\"},{\"id\":11,\"word\":\"数据线\"}]}";
const std::string expected = "{\"data\":[{\"id\":0,\"word\":\"Iphone\"},{\"id\":1,\"word\":\" \"},{\"id\":2,\"word\":\"is\"},{\"id\":3,\"word\":\" \"},{\"id\":4,\"word\":\"a\"},{\"id\":5,\"word\":\" \"},{\"id\":6,\"word\":\"good\"},{\"id\":7,\"word\":\" \"},{\"id\":8,\"word\":\"choice\"},{\"id\":9,\"word\":\" \"},{\"id\":10,\"word\":\"专用\"},{\"id\":11,\"word\":\"数据线\"}]}";
EXPECT_TRUE(outcome.result().payload() == expected);
AlibabaCloud::ShutdownSdk();
}