diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc index 2226ed5b5..ebf895567 100644 --- a/CHANGELOG.asciidoc +++ b/CHANGELOG.asciidoc @@ -30,6 +30,12 @@ Changed `gg` can be used with a count. - Aliases can now use `;;` to have an alias which executed multiple commands. +Fixed +----- + +- Using `:jump-mark` (e.g. `''`) when the current URL is invalid doesn't crash + anymore. + v0.7.0 ------ diff --git a/qutebrowser/mainwindow/tabbedbrowser.py b/qutebrowser/mainwindow/tabbedbrowser.py index 7afb88b76..ffe7b3029 100644 --- a/qutebrowser/mainwindow/tabbedbrowser.py +++ b/qutebrowser/mainwindow/tabbedbrowser.py @@ -668,21 +668,30 @@ class TabbedBrowser(tabwidget.TabWidget): Args: key: mark identifier; capital indicates a global mark """ - # consider urls that differ only in fragment to be identical - urlkey = self.current_url().adjusted(QUrl.RemoveFragment) + try: + # consider urls that differ only in fragment to be identical + urlkey = self.current_url().adjusted(QUrl.RemoveFragment) + except qtutils.QtValueError: + urlkey = None + frame = self.currentWidget().page().currentFrame() - if key.isupper() and key in self._global_marks: - point, url = self._global_marks[key] + if key.isupper(): + if key in self._global_marks: + point, url = self._global_marks[key] - @pyqtSlot(bool) - def callback(ok): - if ok: - self.cur_load_finished.disconnect(callback) - frame.setScrollPosition(point) + @pyqtSlot(bool) + def callback(ok): + if ok: + self.cur_load_finished.disconnect(callback) + frame.setScrollPosition(point) - self.openurl(url, newtab=False) - self.cur_load_finished.connect(callback) + self.openurl(url, newtab=False) + self.cur_load_finished.connect(callback) + else: + message.error(self._win_id, "Mark {} is not set".format(key)) + elif urlkey is None: + message.error(self._win_id, "Current URL is invalid!") elif urlkey in self._local_marks and key in self._local_marks[urlkey]: point = self._local_marks[urlkey][key]