summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Bruhin <me@the-compiler.org>2023-09-24 23:37:27 +0200
committerFlorian Bruhin <me@the-compiler.org>2023-09-24 23:37:34 +0200
commit45ea994c9440b3d3e4c6caca0b9167715ff5bfcd (patch)
tree4813eafecea712e75b096211f0872be993084dd0
parent1478f9dabed864715f1df8e171c8ab7d0221fb30 (diff)
downloadqutebrowser-45ea994c9440b3d3e4c6caca0b9167715ff5bfcd.tar.gz
qutebrowser-45ea994c9440b3d3e4c6caca0b9167715ff5bfcd.zip
Fix and improve workaround
See #7913 (cherry picked from commit 45e168f5112990b085dbb96ce9d9ca16db47dea0)
-rw-r--r--qutebrowser/browser/webengine/webenginetab.py13
1 files changed, 8 insertions, 5 deletions
diff --git a/qutebrowser/browser/webengine/webenginetab.py b/qutebrowser/browser/webengine/webenginetab.py
index f9033f963..fd081b679 100644
--- a/qutebrowser/browser/webengine/webenginetab.py
+++ b/qutebrowser/browser/webengine/webenginetab.py
@@ -5,6 +5,7 @@
"""Wrapper over a QWebEngineView."""
import math
+import struct
import functools
import dataclasses
import re
@@ -12,7 +13,7 @@ import html as html_utils
from typing import cast, Union, Optional
from qutebrowser.qt.core import (pyqtSignal, pyqtSlot, Qt, QPoint, QPointF, QTimer, QUrl,
- QObject)
+ QObject, QByteArray)
from qutebrowser.qt.network import QAuthenticator
from qutebrowser.qt.webenginewidgets import QWebEngineView
from qutebrowser.qt.webenginecore import QWebEnginePage, QWebEngineScript, QWebEngineHistory
@@ -612,13 +613,15 @@ class WebEngineHistoryPrivate(browsertab.AbstractHistoryPrivate):
self._tab = tab
self._history = cast(QWebEngineHistory, None)
+ def _serialize_data(self, version, count, current_index):
+ return struct.pack(">IIi", version, count, current_index)
+
def serialize(self):
data = qtutils.serialize(self._history)
# WORKAROUND for https://bugreports.qt.io/browse/QTBUG-117489
- if data == b"\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00\x00":
- return b"\x00\x00\x00\x04\x00\x00\x00\x00\xff\xff\xff\xff"
- # | '-- count '-- currentIndex
- # '-- kHistoryStreamVersion
+ if data == self._serialize_data(version=4, count=1, current_index=0):
+ fixed_data = self._serialize_data(version=4, count=0, current_index=-1)
+ return QByteArray(fixed_data)
return data
def deserialize(self, data):