On Wed, Apr 21, 2010 at 17:13, <hwright_at_apache.org> wrote:
> Author: hwright
> Date: Wed Apr 21 21:13:44 2010
> New Revision: 936517
> URL: http://svn.apache.org/viewvc?rev=936517&view=rev
> Make the ambient depth filter use absolute paths.
Sigh. You didn't fix anything with this. You were already passing
around an abspath, and that was broken. Now you've just eliminated the
relative path, and explicitly used an abspath, but changed none of the
logic that got broken in the first place.
> +++ subversion/trunk/subversion/libsvn_wc/ambient_depth_filter_editor.c Wed Apr 21 21:13:44 2010
> @@ -138,9 +137,9 @@ make_dir_baton(struct dir_baton **d_p,
> /* Okay, no easy out, so allocate and initialize a dir baton. */
> d = apr_pcalloc(pool, sizeof(*d));
> - d->path = apr_pstrdup(pool, eb->anchor);
> + d->abspath = apr_pstrdup(pool, eb->anchor_abspath);
> if (path)
> - d->path = svn_dirent_join(d->path, path, pool);
> + d->abspath = svn_dirent_join(d->abspath, path, pool);
Hrm. Would seem clearer as:
d->abspath = svn_dirent_join(eb->anchor, path, pool);
d->abspath = eb->anchor;
Note that there is no reason to strdup eb->anchor since the eb lives
way longer than the dir baton.
> /* The svn_depth_unknown means that: 1) pb is the anchor; 2) there
> is an non-null target, for which we are preparing the baton.
> @@ -154,7 +153,8 @@ make_dir_baton(struct dir_baton **d_p,
> svn_boolean_t exists = TRUE;
> abspath = svn_dirent_join(eb->anchor_abspath,
> - svn_dirent_skip_ancestor(eb->anchor, path),
> + svn_dirent_skip_ancestor(eb->anchor_abspath,
> + path),
And here is the key broken part. You can't use an abspath and a
relpath in this way.
"This function assumes @a dirent1 and @a dirent2 are both absolute or
relative in the same way."
This same error is replicated several more times in this file...
Received on 2010-04-22 04:37:35 CEST