summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/changelog.asciidoc8
-rw-r--r--qutebrowser/browser/qtnetworkdownloads.py11
2 files changed, 17 insertions, 2 deletions
diff --git a/doc/changelog.asciidoc b/doc/changelog.asciidoc
index f550f2ef1..28a7d89ea 100644
--- a/doc/changelog.asciidoc
+++ b/doc/changelog.asciidoc
@@ -15,6 +15,14 @@ breaking changes (such as renamed commands) can happen in minor releases.
// `Fixed` for any bug fixes.
// `Security` to invite users to upgrade in case of vulnerabilities.
+v1.5.0 (unreleased)
+-------------------
+
+Fixed
+~~~~~
+
+- Rare crash when an error occurs in downloads.
+
v1.4.0
------
diff --git a/qutebrowser/browser/qtnetworkdownloads.py b/qutebrowser/browser/qtnetworkdownloads.py
index 4e992b172..bdd2b280a 100644
--- a/qutebrowser/browser/qtnetworkdownloads.py
+++ b/qutebrowser/browser/qtnetworkdownloads.py
@@ -29,7 +29,7 @@ from PyQt5.QtCore import pyqtSlot, pyqtSignal, QTimer
from PyQt5.QtNetwork import QNetworkRequest, QNetworkReply
from qutebrowser.config import config
-from qutebrowser.utils import message, usertypes, log, urlutils, utils
+from qutebrowser.utils import message, usertypes, log, urlutils, utils, debug
from qutebrowser.browser import downloads
from qutebrowser.browser.webkit import http
from qutebrowser.browser.webkit.network import networkmanager
@@ -307,7 +307,14 @@ class DownloadItem(downloads.AbstractDownloadItem):
"""Handle QNetworkReply errors."""
if code == QNetworkReply.OperationCanceledError:
return
- self._die(self._reply.errorString())
+
+ if self._reply is None:
+ error = "Unknown error: {}".format(
+ debug.qenum_key(QNetworkReply, code))
+ else:
+ error = self._reply.errorString()
+
+ self._die(error)
@pyqtSlot()
def _on_read_timer_timeout(self):