util: Fix leak in uri_encode. Add uri_decode
authorAdam Dickmeiss <adam@indexdata.dk>
Fri, 16 Dec 2011 11:44:45 +0000 (12:44 +0100)
committerAdam Dickmeiss <adam@indexdata.dk>
Fri, 16 Dec 2011 11:44:45 +0000 (12:44 +0100)
include/metaproxy/util.hpp
src/util.cpp

index 7c9f1ee..3df8654 100644 (file)
@@ -125,6 +125,7 @@ namespace metaproxy_1 {
                        const char **element_set_name);
 
         std::string uri_encode(std::string s);
+        std::string uri_decode(std::string s);
     };
 
     class odr : public boost::noncopyable {
index 1f335a1..4265682 100644 (file)
@@ -690,9 +690,21 @@ std::string mp_util::uri_encode(std::string s)
     char *x = (char *) xmalloc(1 + s.length() * 3);
     yaz_encode_uri_component(x, s.c_str());
     std::string result(x);
+    xfree(x);
     return result;
 }
 
+
+std::string mp_util::uri_decode(std::string s)
+{
+    char *x = (char *) xmalloc(1 + s.length());
+    yaz_decode_uri_component(x, s.c_str(), s.length());
+    std::string result(x);
+    xfree(x);
+    return result;
+}
+
+
 /*
  * Local variables:
  * c-basic-offset: 4