From: Zac Medico Date: Tue, 9 Jan 2007 18:54:09 +0000 (-0000) Subject: For bug #161103, don't skip collision-protect checks in cases where the beginning... X-Git-Tag: v2.1.2~130 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=045385c4f079c6f0f4a30076ae1e366f6d7f5ef4;p=portage.git For bug #161103, don't skip collision-protect checks in cases where the beginning of the file path matches a symlink but is not acually inside a symlinked directory (check the path against symlink + os.path.sep). svn path=/main/trunk/; revision=5499 --- diff --git a/pym/portage.py b/pym/portage.py index b16d3c711..52d49396d 100644 --- a/pym/portage.py +++ b/pym/portage.py @@ -7017,6 +7017,9 @@ class dblink: os.chdir(srcroot) mysymlinks = filter(os.path.islink, listdir(srcroot, recursive=1, filesonly=0, followSymlinks=False)) myfilelist.extend(mysymlinks) + mysymlinked_directories = [s + os.path.sep for s in mysymlinks] + del mysymlinks + stopmerge=False starttime=time.time() @@ -7043,10 +7046,10 @@ class dblink: nocheck = False # listdir isn't intelligent enough to exclude symlinked dirs, # so we have to do it ourself - for s in mysymlinks: - # the length comparison makes sure that the symlink itself is checked - if f[:len(s)] == s and len(f) > len(s): + for s in mysymlinked_directories: + if f.startswith(s): nocheck = True + break if nocheck: continue i=i+1