You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by st...@apache.org on 2015/08/15 00:19:28 UTC

svn commit: r1695995 - /subversion/trunk/tools/client-side/svn-mergeinfo-normalizer/log.c

Author: stefan2
Date: Fri Aug 14 22:19:28 2015
New Revision: 1695995

URL: http://svn.apache.org/r1695995
Log:
Revert a snafu introduced in r1695879 that causes a segfault.

* tools/client-side/svn-mergeinfo-normalizer/log.c
  (svn_min__log_t): Extend docstring.
  (internalize): Re-introduce the pool argument for all path strings.
  (log_entry_receiver): Update caller.

Modified:
    subversion/trunk/tools/client-side/svn-mergeinfo-normalizer/log.c

Modified: subversion/trunk/tools/client-side/svn-mergeinfo-normalizer/log.c
URL: http://svn.apache.org/viewvc/subversion/trunk/tools/client-side/svn-mergeinfo-normalizer/log.c?rev=1695995&r1=1695994&r2=1695995&view=diff
==============================================================================
--- subversion/trunk/tools/client-side/svn-mergeinfo-normalizer/log.c (original)
+++ subversion/trunk/tools/client-side/svn-mergeinfo-normalizer/log.c Fri Aug 14 22:19:28 2015
@@ -153,17 +153,18 @@ deletion_order(const void *lhs,
 }
 
 /* Return the string stored in UNIQUE_PATHS with the value PATH of PATH_LEN
- * characters.  If the hash does not have a matching entry, add one. */
+ * characters.  If the hash does not have a matching entry, add one.
+ * Allocate all strings in RESULT_POOL. */
 static const char *
 internalize(apr_hash_t *unique_paths,
             const char *path,
-            apr_ssize_t path_len)
+            apr_ssize_t path_len,
+            apr_pool_t *result_pool)
 {
   const char *result = apr_hash_get(unique_paths, path, path_len);
   if (result == NULL)
     {
-      apr_pool_t *pool = apr_hash_pool_get(unique_paths);
-      result = apr_pstrmemdup(pool, path, path_len);
+      result = apr_pstrmemdup(result_pool, path, path_len);
       apr_hash_set(unique_paths, result, path_len, result);
     }
 
@@ -202,7 +203,8 @@ log_entry_receiver(void *baton,
       const char *path = apr_hash_this_key(hi);
       svn_log_changed_path_t *change = apr_hash_this_val(hi);
 
-      path = internalize(log->unique_paths, path, apr_hash_this_key_len(hi));
+      path = internalize(log->unique_paths, path, apr_hash_this_key_len(hi),
+                         result_pool);
       APR_ARRAY_PUSH(entry->paths, const char *) = path;
 
       if (change->action == 'D' || change->action == 'R')
@@ -221,7 +223,8 @@ log_entry_receiver(void *baton,
           copy->revision = log_entry->revision;
           copy->copyfrom_path = internalize(log->unique_paths,
                                             change->copyfrom_path,
-                                            strlen(change->copyfrom_path));
+                                            strlen(change->copyfrom_path),
+                                            result_pool);
           copy->copyfrom_revision = change->copyfrom_rev;
 
           APR_ARRAY_PUSH(log->copies, svn_min__copy_t *) = copy;
@@ -243,7 +246,7 @@ log_entry_receiver(void *baton,
                       APR_ARRAY_IDX(entry->paths, count - 1, const char *),
                       scratch_pool);
       entry->common_base = internalize(log->unique_paths, common_base,
-                                       strlen(common_base));
+                                       strlen(common_base), result_pool);
     }
 
   /* Done with that reivison. */