From 68b9dff74733278fb8095215db3bd5f00fa3aa50 Mon Sep 17 00:00:00 2001 From: lufte Date: Fri, 17 Aug 2018 00:59:14 -0300 Subject: [PATCH 1/4] Perform attribute updates on a record's clone --- qutebrowser/utils/log.py | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/qutebrowser/utils/log.py b/qutebrowser/utils/log.py index 48711614d..ef8aa2ae5 100644 --- a/qutebrowser/utils/log.py +++ b/qutebrowser/utils/log.py @@ -25,6 +25,7 @@ import html as pyhtml import logging import contextlib import collections +import copy import faulthandler import traceback import warnings @@ -637,17 +638,18 @@ class HTMLFormatter(logging.Formatter): self._colordict['reset'] = '' def format(self, record): - record.__dict__.update(self._colordict) - if record.levelname in self._log_colors: - color = self._log_colors[record.levelname] - record.log_color = self._colordict[color] + record_clone = copy.copy(record) + record_clone.__dict__.update(self._colordict) + if record_clone.levelname in self._log_colors: + color = self._log_colors[record_clone.levelname] + record_clone.log_color = self._colordict[color] else: - record.log_color = '' + record_clone.log_color = '' for field in ['msg', 'filename', 'funcName', 'levelname', 'module', 'name', 'pathname', 'processName', 'threadName']: - data = str(getattr(record, field)) - setattr(record, field, pyhtml.escape(data)) - msg = super().format(record) + data = str(getattr(record_clone, field)) + setattr(record_clone, field, pyhtml.escape(data)) + msg = super().format(record_clone) if not msg.endswith(self._colordict['reset']): msg += self._colordict['reset'] return msg From fd70d6d2d8d516ad424211d0fb7b89caee771009 Mon Sep 17 00:00:00 2001 From: lufte Date: Fri, 17 Aug 2018 01:00:32 -0300 Subject: [PATCH 2/4] Some memory improvements with generators --- qutebrowser/utils/log.py | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/qutebrowser/utils/log.py b/qutebrowser/utils/log.py index ef8aa2ae5..f14b6be1e 100644 --- a/qutebrowser/utils/log.py +++ b/qutebrowser/utils/log.py @@ -569,16 +569,14 @@ class RAMHandler(logging.Handler): https://github.com/qutebrowser/qutebrowser/issues/34 """ minlevel = LOG_LEVELS.get(level.upper(), VDEBUG_LEVEL) - lines = [] fmt = self.html_formatter.format if html else self.format self.acquire() try: - records = list(self._data) + lines = list(fmt(record) + for record in self._data + if record.levelno >= minlevel) finally: self.release() - for record in records: - if record.levelno >= minlevel: - lines.append(fmt(record)) return '\n'.join(lines) def change_log_capacity(self, capacity): From 9c4337c359a5641c20f09e2f3deef25e9ef1c372 Mon Sep 17 00:00:00 2001 From: lufte Date: Fri, 17 Aug 2018 18:06:23 -0300 Subject: [PATCH 3/4] Fix "Unnecessary generator - rewrite as a list comprehension." --- qutebrowser/utils/log.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/qutebrowser/utils/log.py b/qutebrowser/utils/log.py index f14b6be1e..afe0a3cb3 100644 --- a/qutebrowser/utils/log.py +++ b/qutebrowser/utils/log.py @@ -572,9 +572,9 @@ class RAMHandler(logging.Handler): fmt = self.html_formatter.format if html else self.format self.acquire() try: - lines = list(fmt(record) - for record in self._data - if record.levelno >= minlevel) + lines = [fmt(record) + for record in self._data + if record.levelno >= minlevel] finally: self.release() return '\n'.join(lines) From 995f9b47a06c1fc0a5b612c5d6e6c6bc624b9fa1 Mon Sep 17 00:00:00 2001 From: Jay Kamat Date: Sat, 18 Aug 2018 13:33:12 -0700 Subject: [PATCH 4/4] Update changelog --- doc/changelog.asciidoc | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/changelog.asciidoc b/doc/changelog.asciidoc index 0d6081b8a..4ad838fc3 100644 --- a/doc/changelog.asciidoc +++ b/doc/changelog.asciidoc @@ -57,6 +57,7 @@ Fixed - Crash in the `importer.py` script when importing Chrome bookmarks from newer Chrome versions. - The `content.webrtc_public_interfaces_only` option didn't work on Qt 5.11 previously (it now does). Note it still does not work on Qt 5.10 (due to a Qt bug) and Qt < 5.9.2. +- Repeated escaping of entries in `qute://log` when refreshing page. v1.4.1 ------