[meld] Guard against edge-cases for broken symlinks (closes bgo#585895)



commit 24c0ec02c64b4ab969bb05de6615e7ca703b05e5
Author: Kai Willadsen <kai willadsen gmail com>
Date:   Fri Jun 26 16:38:12 2009 +1000

    Guard against edge-cases for broken symlinks (closes bgo#585895)
    
    In some cases, comparisons on FUSE-mounted directories would fail on
    dangling symlinks. Guarding the lstat() call works around this.
    
    Based on a patch from Max Naude.

 dirdiff.py |    6 +++++-
 1 files changed, 5 insertions(+), 1 deletions(-)
---
diff --git a/dirdiff.py b/dirdiff.py
index 0c5c5b9..5fd471f 100644
--- a/dirdiff.py
+++ b/dirdiff.py
@@ -451,7 +451,11 @@ class DirDiff(melddoc.MeldDoc, gnomeglade.Component):
                         files = []
                         dirs = []
                         for e in entries:
-                            s = os.lstat(os.path.join(root, e))
+                            try: # Necessary for some broken symlink cases; see bgo#585895
+                                s = os.lstat(os.path.join(root, e))
+                            except OSError, err:
+                                print "Ignoring OS error: %s" % err
+                                continue
                             if stat.S_ISLNK(s.st_mode):
                                 if not self.prefs.ignore_symlinks:
                                     key = (s.st_dev, s.st_ino)



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]