[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
emacs-28 1b77362771: Avoid hangs in python-mode with debug-on-error set
From: |
Lars Ingebrigtsen |
Subject: |
emacs-28 1b77362771: Avoid hangs in python-mode with debug-on-error set |
Date: |
Mon, 18 Apr 2022 07:20:26 -0400 (EDT) |
branch: emacs-28
commit 1b7736277114bf91012b817a4e2557625b7340a5
Author: Lars Ingebrigtsen <larsi@gnus.org>
Commit: Lars Ingebrigtsen <larsi@gnus.org>
Avoid hangs in python-mode with debug-on-error set
* lisp/progmodes/python.el (python-nav-end-of-statement): Avoid
using cl-assert here, because this is called from the font-lock
machinery, and if debug-on-error is set here, we'll hang Emacs
(bug#54996).
Do not merge to master.
---
lisp/progmodes/python.el | 31 ++++++++++++++-----------------
1 file changed, 14 insertions(+), 17 deletions(-)
diff --git a/lisp/progmodes/python.el b/lisp/progmodes/python.el
index e6e8a37ad5..70828cb223 100644
--- a/lisp/progmodes/python.el
+++ b/lisp/progmodes/python.el
@@ -1620,23 +1620,20 @@ of the statement."
;; are somehow out of whack. This has been
;; observed when using `syntax-ppss' during
;; narrowing.
- (cl-assert (>= string-start last-string-end)
- :show-args
- "\
-Overlapping strings detected (start=%d, last-end=%d)")
- (goto-char string-start)
- (if (python-syntax-context 'paren)
- ;; Ended up inside a paren, roll again.
- (python-nav-end-of-statement t)
- ;; This is not inside a paren, move to the
- ;; end of this string.
- (goto-char (+ (point)
- (python-syntax-count-quotes
- (char-after (point)) (point))))
- (setq last-string-end
- (or (re-search-forward
- (rx (syntax string-delimiter)) nil t)
- (goto-char (point-max))))))
+ (when (>= string-start last-string-end)
+ (goto-char string-start)
+ (if (python-syntax-context 'paren)
+ ;; Ended up inside a paren, roll again.
+ (python-nav-end-of-statement t)
+ ;; This is not inside a paren, move to the
+ ;; end of this string.
+ (goto-char (+ (point)
+ (python-syntax-count-quotes
+ (char-after (point)) (point))))
+ (setq last-string-end
+ (or (re-search-forward
+ (rx (syntax string-delimiter)) nil t)
+ (goto-char (point-max)))))))
((python-syntax-context 'paren)
;; The statement won't end before we've escaped
;; at least one level of parenthesis.
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- emacs-28 1b77362771: Avoid hangs in python-mode with debug-on-error set,
Lars Ingebrigtsen <=