From 7a0d077e4545f18d30488122fee80ba4df1c7b52 Mon Sep 17 00:00:00 2001 From: toonn Date: Wed, 12 Aug 2020 23:20:17 +0200 Subject: If files is None we can't set the _pointed_obj Fixes #2071 --- ranger/core/tab.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ranger/core/tab.py b/ranger/core/tab.py index 64edf120..1771ffa2 100644 --- a/ranger/core/tab.py +++ b/ranger/core/tab.py @@ -69,7 +69,10 @@ class Tab(FileManagerAware, SettingsAware): # pylint: disable=too-many-instance def _set_pointer(self, value): self._pointer = value - self._pointed_obj = self.thisdir.files[self._pointer] + try: + self._pointed_obj = self.thisdir.files[self._pointer] + except TypeError: + pass pointer = property(_get_pointer, _set_pointer) -- cgit 1.4.1-2-gfad0 From 6fd49695111232df31358a67b11dc5ee3b8dbcfc Mon Sep 17 00:00:00 2001 From: chu4ng Date: Sat, 5 Dec 2020 06:29:33 +0300 Subject: Fix IndexError(list index out of range); Fix #2173. --- ranger/core/tab.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ranger/core/tab.py b/ranger/core/tab.py index 1771ffa2..b61a77cc 100644 --- a/ranger/core/tab.py +++ b/ranger/core/tab.py @@ -73,6 +73,8 @@ class Tab(FileManagerAware, SettingsAware): # pylint: disable=too-many-instance self._pointed_obj = self.thisdir.files[self._pointer] except TypeError: pass + except IndexError: + pass pointer = property(_get_pointer, _set_pointer) -- cgit 1.4.1-2-gfad0 From f1c5ff1e9086f7fbe6c610c53b15cacddcef036b Mon Sep 17 00:00:00 2001 From: toonn Date: Tue, 5 Jan 2021 18:56:08 +0100 Subject: Refactor error checking for _pointed_obj Fixes #2086 Fixes #2125 Fixes #2136 Fixes #2173 Fixes #2205 Fixes #2209 --- ranger/core/tab.py | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/ranger/core/tab.py b/ranger/core/tab.py index b61a77cc..3a0fb943 100644 --- a/ranger/core/tab.py +++ b/ranger/core/tab.py @@ -57,23 +57,21 @@ class Tab(FileManagerAware, SettingsAware): # pylint: disable=too-many-instance thisfile = property(_get_thisfile, _set_thisfile) def _get_pointer(self): - if ( - self.thisdir is not None - and self.thisdir.files[self._pointer] != self._pointed_obj - ): - try: - self._pointer = self.thisdir.files.index(self._pointed_obj) - except ValueError: - self._pointed_obj = self.thisdir.files[self._pointer] + try: + if self.thisdir.files[self._pointer] != self._pointed_obj: + try: + self._pointer = self.thisdir.files.index(self._pointed_obj) + except ValueError: + self._set_pointer(self._pointer) + except (TypeError, IndexError): + pass return self._pointer def _set_pointer(self, value): self._pointer = value try: self._pointed_obj = self.thisdir.files[self._pointer] - except TypeError: - pass - except IndexError: + except (TypeError, IndexError): pass pointer = property(_get_pointer, _set_pointer) -- cgit 1.4.1-2-gfad0