summaryrefslogtreecommitdiff
path: root/louloulibs/utils/encoding.cpp
diff options
context:
space:
mode:
authorlouiz’ <louiz@louiz.org>2016-10-20 19:32:20 +0200
committerlouiz’ <louiz@louiz.org>2016-10-20 19:32:20 +0200
commitce06c25e93183282be42ab79bfed2ab7c02791ec (patch)
treeebb9d3c98d641d7a7af1191df72cb72cd801221c /louloulibs/utils/encoding.cpp
parent6b4d2e8e3ea6a019778624106b7a839d875152cd (diff)
downloadbiboumi-ce06c25e93183282be42ab79bfed2ab7c02791ec.tar.gz
biboumi-ce06c25e93183282be42ab79bfed2ab7c02791ec.tar.bz2
biboumi-ce06c25e93183282be42ab79bfed2ab7c02791ec.tar.xz
biboumi-ce06c25e93183282be42ab79bfed2ab7c02791ec.zip
Very little optimization by using a simpler scope_guard when possible
The version with the vector, that can be disabled etc, is “very” slow, so we use unique_ptr when we don’t need to disable it, and when it only contains one function
Diffstat (limited to 'louloulibs/utils/encoding.cpp')
-rw-r--r--louloulibs/utils/encoding.cpp8
1 files changed, 4 insertions, 4 deletions
diff --git a/louloulibs/utils/encoding.cpp b/louloulibs/utils/encoding.cpp
index 507f38a..4b20797 100644
--- a/louloulibs/utils/encoding.cpp
+++ b/louloulibs/utils/encoding.cpp
@@ -76,7 +76,7 @@ namespace utils
{
// The given string MUST be a valid utf-8 string
unsigned char* res = new unsigned char[original.size()];
- ScopeGuard sg([&res]() { delete[] res;});
+ const auto sg = utils::make_scope_guard([&res](auto&&) { delete[] res;});
// pointer where we write valid chars
unsigned char* r = res;
@@ -140,7 +140,7 @@ namespace utils
else
throw std::runtime_error("Invalid UTF-8 passed to remove_invalid_xml_chars");
}
- return std::string(reinterpret_cast<char*>(res), r-res);
+ return {reinterpret_cast<char*>(res), static_cast<size_t>(r-res)};
}
std::string convert_to_utf8(const std::string& str, const char* charset)
@@ -152,7 +152,7 @@ namespace utils
throw std::runtime_error("Cannot convert into UTF-8");
// Make sure cd is always closed when we leave this function
- ScopeGuard sg([&]{ iconv_close(cd); });
+ const auto sg = utils::make_scope_guard([&](auto&&){ iconv_close(cd); });
size_t inbytesleft = str.size();
@@ -169,7 +169,7 @@ namespace utils
char* outbuf_ptr = outbuf;
// Make sure outbuf is always deleted when we leave this function
- sg.add_callback([&]{ delete[] outbuf; });
+ const auto sg2 = utils::make_scope_guard([&](auto&&){ delete[] outbuf; });
bool done = false;
while (done == false)