[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: svn commit: r37871 - trunk/subversion/libsvn_wc

From: Greg Stein <gstein_at_gmail.com>
Date: Tue, 7 Jul 2009 15:08:00 +0200

What freed memory? I don't see where that occurred...

On Thu, May 28, 2009 at 05:28, Hyrum K. Wright<hyrum_at_hyrumwright.org> wrote:
> Author: hwright
> Date: Wed May 27 20:28:39 2009
> New Revision: 37871
>
> Log:
> Slight optimization and correctness fix in followup to r37870.
> Optimization: Combine a couple of loops.
> Correctness Fix: Stop referencing freed memory.
>
> * subversion/libsvn_wc/entries.c
>  (entries_write_body): Combine the two loops.
>
> Modified:
>   trunk/subversion/libsvn_wc/entries.c
>
> Modified: trunk/subversion/libsvn_wc/entries.c
> URL: http://svn.collab.net/viewvc/svn/trunk/subversion/libsvn_wc/entries.c?pathrev=37871&r1=37870&r2=37871
> ==============================================================================
> --- trunk/subversion/libsvn_wc/entries.c        Wed May 27 15:44:14 2009        (r37870)
> +++ trunk/subversion/libsvn_wc/entries.c        Wed May 27 20:28:39 2009        (r37871)
> @@ -2445,6 +2445,7 @@ entries_write_body(svn_wc__db_t *db,
>       const void *key;
>       void *val;
>       const svn_wc_entry_t *this_entry;
> +      const char *child_abspath;
>
>       svn_pool_clear(iterpool);
>
> @@ -2457,26 +2458,18 @@ entries_write_body(svn_wc__db_t *db,
>         continue;
>
>       /* Write the entry. */
> +      child_abspath = svn_dirent_join(local_abspath, key, iterpool);
>       SVN_ERR(write_entry(db, wc_db, wc_id, repos_id, repos_root,
> -                          this_entry, key,
> -                          svn_dirent_join(local_abspath, key, iterpool),
> -                          this_dir, iterpool));
> -    }
> -
> -  for (hi = apr_hash_first(scratch_pool, dav_cache); hi;
> -        hi = apr_hash_next(hi))
> -    {
> -      const void *key;
> -      void *val;
> -      const char *child_abspath;
> -
> -      svn_pool_clear(iterpool);
> -      apr_hash_this(hi, &key, NULL, &val);
> -      child_abspath = key;
> -      child_cache = val;
> +                          this_entry, key, child_abspath, this_dir, iterpool));
>
> -      SVN_ERR(svn_wc__db_base_set_dav_cache(db, child_abspath, child_cache,
> -                                            iterpool));
> +      /* Write the dav cache.
> +         ### This can go away when we stop unconditionally deleting all
> +         ### the entries before writing them (see comments above). */
> +      child_cache = apr_hash_get(dav_cache, child_abspath,
> +                                 APR_HASH_KEY_STRING);
> +      if (child_cache)
> +        SVN_ERR(svn_wc__db_base_set_dav_cache(db, child_abspath, child_cache,
> +                                              iterpool));
>     }
>
>   svn_pool_destroy(iterpool);
>
> ------------------------------------------------------
> http://subversion.tigris.org/ds/viewMessage.do?dsForumId=495&dsMessageId=2356019
>

------------------------------------------------------
http://subversion.tigris.org/ds/viewMessage.do?dsForumId=462&dsMessageId=2368818
Received on 2009-07-07 15:08:17 CEST

This is an archived mail posted to the Subversion Dev mailing list.