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 2012/05/22 01:46:42 UTC
svn commit: r1341273 - /subversion/trunk/subversion/libsvn_fs_fs/fs_fs.c
Author: stefan2
Date: Mon May 21 23:46:41 2012
New Revision: 1341273
URL: http://svn.apache.org/viewvc?rev=1341273&view=rev
Log:
Don't assume that all changed paths have been fully normalized.
* subversion/libsvn_fs_fs/fs_fs.c
(fetch_all_changes): Improve robustness.
Modified:
subversion/trunk/subversion/libsvn_fs_fs/fs_fs.c
Modified: subversion/trunk/subversion/libsvn_fs_fs/fs_fs.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_fs_fs/fs_fs.c?rev=1341273&r1=1341272&r2=1341273&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_fs_fs/fs_fs.c (original)
+++ subversion/trunk/subversion/libsvn_fs_fs/fs_fs.c Mon May 21 23:46:41 2012
@@ -4852,9 +4852,16 @@ fetch_all_changes(apr_hash_t *changed_pa
apr_hash_index_t *hi;
/* a potential child path must contain at least 2 more chars
- (the path separator plus at least one char for the name)
+ (the path separator plus at least one char for the name).
+ Also, we should not assume that all paths have been normalized
+ i.e. some might have trailing path separators.
*/
- apr_ssize_t min_child_len = strlen(change->path) + 2;
+ apr_ssize_t change_path_len = strlen(change->path);
+ apr_ssize_t min_child_len = change_path_len == 0
+ ? 1
+ : change->path[change_path_len-1] == '/'
+ ? change_path_len + 1
+ : change_path_len + 2;
/* CAUTION: This is the inner loop of an O(n^2) algorithm.
The number of changes to process may be >> 1000.