Author: rhuijben
Date: Fri Mar  6 11:18:29 2015
New Revision: 1664588

URL: http://svn.apache.org/r1664588
Log:
Avoid two loops over one hashtable and an assertion/abort() in apr when
pool debugging is enabled (because the iterpool is not a subpool of
both original pools)

* subversion/libsvn_subr/auth.c
  (svn_auth_first_credentials): Just make a copy of the original hash and
    overwrite with slave parameters.

Modified:
    subversion/trunk/subversion/libsvn_subr/auth.c

Modified: subversion/trunk/subversion/libsvn_subr/auth.c
URL: 
http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_subr/auth.c?rev=1664588&r1=1664587&r2=1664588&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_subr/auth.c (original)
+++ subversion/trunk/subversion/libsvn_subr/auth.c Fri Mar  6 11:18:29 2015
@@ -256,15 +256,18 @@ svn_auth_first_credentials(void **creden
   if (auth_baton->slave_parameters)
     {
       apr_hash_index_t *hi;
-      parameters = apr_hash_overlay(pool, auth_baton->slave_parameters,
-                                    auth_baton->parameters);
+      parameters = apr_hash_copy(pool, auth_baton->parameters);
 
       for (hi = apr_hash_first(pool, auth_baton->slave_parameters);
             hi;
             hi = apr_hash_next(hi))
         {
-          if (apr_hash_this_val(hi) == &auth_NULL)
-            svn_hash_sets(parameters, apr_hash_this_key(hi), NULL);
+          const void *value = apr_hash_this_val(hi);
+
+          if (value == &auth_NULL)
+            value = NULL;
+
+          svn_hash_sets(parameters, apr_hash_this_key(hi), value);
         }
     }
   else


Reply via email to