From 2d84fc008b95364b92e43ca7dd1104894a81aaa0 Mon Sep 17 00:00:00 2001 From: Rob Browning Date: Sat, 25 Nov 2017 11:09:18 -0600 Subject: [PATCH] vfs2._resolve_path: replace + with append() for result lists Signed-off-by: Rob Browning Tested-by: Rob Browning --- lib/bup/vfs2.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/lib/bup/vfs2.py b/lib/bup/vfs2.py index 2482779..7cfa928 100644 --- a/lib/bup/vfs2.py +++ b/lib/bup/vfs2.py @@ -698,23 +698,27 @@ def _resolve_path(repo, path, parent=None, want_meta=True, deref=False): assert dot == '.' past[-1] = parent_name, parent_item if not item: - return tuple(past + [(segment, None)]) + past.append((segment, None),) + return tuple(past) mode = item_mode(item) if not S_ISLNK(mode): if not S_ISDIR(mode): assert(not future) - return tuple(past + [(segment, item)]) + past.append((segment, item),) + return tuple(past) # It's treeish if want_meta and type(item) == Item: dir_meta = _find_dir_item_metadata(repo, item) if dir_meta: item = item._replace(meta=dir_meta) if not future: - return tuple(past + [(segment, item)]) + past.append((segment, item),) + return tuple(past) past.append((segment, item)) else: # symlink if not future and not deref: - return tuple(past + [(segment, item)]) + past.append((segment, item),) + return tuple(past) target = readlink(repo, item) target_future = _decompose_path(target) if target.startswith('/'): @@ -723,7 +727,7 @@ def _resolve_path(repo, path, parent=None, want_meta=True, deref=False): if target_future == ['']: # path was effectively '/' return tuple(past) else: - future = future + target_future + future.extend(target_future) hops += 1 if hops > 100: raise Loop('too many symlinks encountered while resolving %r%s' -- 2.39.2