You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by iv...@apache.org on 2011/05/20 12:43:06 UTC

svn commit: r1125315 - in /subversion/trunk/subversion/libsvn_ra_neon: options.c ra_neon.h util.c

Author: ivan
Date: Fri May 20 10:43:05 2011
New Revision: 1125315

URL: http://svn.apache.org/viewvc?rev=1125315&view=rev
Log:
ra_neon: Refactor and fix small memory leak.

* subversion/libsvn_ra_neon/ra_neon.h
* subversion/libsvn_ra_neon/util.c
  (svn_ra_neon__uri_unparse): New wrapper around ne_uri_unparse().

* subversion/libsvn_ra_neon/options.c
  (parse_capabilities): Use svn_ra_neon__uri_unparse().

Modified:
    subversion/trunk/subversion/libsvn_ra_neon/options.c
    subversion/trunk/subversion/libsvn_ra_neon/ra_neon.h
    subversion/trunk/subversion/libsvn_ra_neon/util.c

Modified: subversion/trunk/subversion/libsvn_ra_neon/options.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_ra_neon/options.c?rev=1125315&r1=1125314&r2=1125315&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_ra_neon/options.c (original)
+++ subversion/trunk/subversion/libsvn_ra_neon/options.c Fri May 20 10:43:05 2011
@@ -225,13 +225,10 @@ parse_capabilities(ne_request *req,
     }
   if ((val = ne_get_response_header(req, SVN_DAV_ROOT_URI_HEADER)))
     {
-      ne_uri root = ras->root;
-      char *root_uri;
+      ne_uri root_uri = ras->root;
 
-      root.path = (char *)val;
-      root_uri = ne_uri_unparse(&root);
-      ras->repos_root = apr_pstrdup(ras->pool, root_uri);
-      free(root_uri);
+      root_uri.path = (char *)val;
+      ras->repos_root = svn_ra_neon__uri_unparse(&root_uri, ras->pool);
     }
 
   /* HTTP v2 stuff */

Modified: subversion/trunk/subversion/libsvn_ra_neon/ra_neon.h
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_ra_neon/ra_neon.h?rev=1125315&r1=1125314&r2=1125315&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_ra_neon/ra_neon.h (original)
+++ subversion/trunk/subversion/libsvn_ra_neon/ra_neon.h Fri May 20 10:43:05 2011
@@ -1168,6 +1168,12 @@ svn_ra_neon__assemble_locktoken_body(svn
                                      apr_pool_t *pool);
 
 
+/* Wrapper around ne_uri_unparse(). Turns a URI structure back into a string.
+ * The returned string is allocated in POOL. */
+const char *
+svn_ra_neon__uri_unparse(const ne_uri *uri,
+                         apr_pool_t *pool);
+
 #ifdef __cplusplus
 }
 #endif /* __cplusplus */

Modified: subversion/trunk/subversion/libsvn_ra_neon/util.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_ra_neon/util.c?rev=1125315&r1=1125314&r2=1125315&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_ra_neon/util.c (original)
+++ subversion/trunk/subversion/libsvn_ra_neon/util.c Fri May 20 10:43:05 2011
@@ -1578,3 +1578,23 @@ svn_ra_neon__request_get_location(svn_ra
   const char *val = ne_get_response_header(request->ne_req, "Location");
   return val ? svn_urlpath__canonicalize(val, pool) : NULL;
 }
+
+const char *
+svn_ra_neon__uri_unparse(const ne_uri *uri,
+                         apr_pool_t *pool)
+{
+  char *unparsed_uri;
+  const char *result;
+
+  /* Unparse uri. */
+  unparsed_uri = ne_uri_unparse(uri);
+
+  /* Copy string to result pool. */
+  result = apr_pstrdup(pool, unparsed_uri);
+
+  /* Free neon's allocated copy. */
+  ne_free(unparsed_uri);
+
+  /* Return string allocated in result pool. */
+  return result;
+}