diff --git a/common/cpp/src/database/encoding.cpp b/common/cpp/src/database/encoding.cpp
index 76c41e36bd4e2cf7853881752ca798b06046d9bd..29a419752542ff44b724806b746f44ea8eff8c00 100644
--- a/common/cpp/src/database/encoding.cpp
+++ b/common/cpp/src/database/encoding.cpp
@@ -84,9 +84,9 @@ std::string EncodeColName(const std::string &colname) {
 }
 
 std::string DecodeName(const std::string &name) {
-    char *decoded = (char*) malloc(name.size()*sizeof(char));
-    auto res = decode(name.c_str(), decoded);
-    return res >= 0 ? decoded : "";
+    std::unique_ptr<char>decoded{new char(name.size())};
+    auto res = decode(name.c_str(), decoded.get());
+    return res >= 0 ? decoded.get() : "";
 }
 
 bool ShouldEscapeQuery(char c) {