Author: philip Date: Tue Sep 18 16:04:40 2012 New Revision: 1387226 URL: http://svn.apache.org/viewvc?rev=1387226&view=rev Log: Fix issue 4231, mod_dav_svn assert with SVNAutoVersioning and <Location />.
* subversion/mod_dav_svn/repos.c (create_private_resource, parse_querystring, dav_svn__create_working_resource): Construct valid path when root is "/". Modified: subversion/trunk/subversion/mod_dav_svn/repos.c Modified: subversion/trunk/subversion/mod_dav_svn/repos.c URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/mod_dav_svn/repos.c?rev=1387226&r1=1387225&r2=1387226&view=diff ============================================================================== --- subversion/trunk/subversion/mod_dav_svn/repos.c (original) +++ subversion/trunk/subversion/mod_dav_svn/repos.c Tue Sep 18 16:04:40 2012 @@ -1149,8 +1149,11 @@ create_private_resource(const dav_resour comb->res.collection = TRUE; /* ### always true? */ /* versioned = baselined = working = FALSE */ - comb->res.uri = apr_pstrcat(base->pool, base->info->repos->root_path, - path->data, (char *)NULL); + if (base->info->repos->root_path[1]) + comb->res.uri = apr_pstrcat(base->pool, base->info->repos->root_path, + path->data, (char *)NULL); + else + comb->res.uri = path->data; comb->res.info = &comb->priv; comb->res.hooks = &dav_svn__hooks_repository; comb->res.pool = base->pool; @@ -1908,9 +1911,11 @@ parse_querystring(request_rec *r, const only use a temporary redirect. */ apr_table_setn(r->headers_out, "Location", ap_construct_url(r->pool, - apr_psprintf(r->pool, "%s%s?p=%ld", - comb->priv.repos->root_path, - newpath, working_rev), + apr_psprintf(r->pool, "%s%s?p=%ld", + (comb->priv.repos->root_path[1] + ? comb->priv.repos->root_path + : ""), + newpath, working_rev), r)); return dav_svn__new_error(r->pool, prevstr ? HTTP_MOVED_PERMANENTLY @@ -4346,8 +4351,11 @@ dav_svn__create_working_resource(dav_res res->baselined = base->baselined; /* collection = FALSE. ### not necessarily correct */ - res->uri = apr_pstrcat(base->pool, base->info->repos->root_path, - path, (char *)NULL); + if (base->info->repos->root_path[1]) + res->uri = apr_pstrcat(base->pool, base->info->repos->root_path, + path, (char *)NULL); + else + res->uri = path; res->hooks = &dav_svn__hooks_repository; res->pool = base->pool;