diff options
author | David McFarland <corngood@gmail.com> | 2017-12-30 13:14:32 +0200 |
---|---|---|
committer | Eli Zaretskii <eliz@gnu.org> | 2017-12-30 13:14:32 +0200 |
commit | 30ffc256abe7443a02b44490c518baf9a122b4c8 (patch) | |
tree | 2c7b2c5af1d58339a40271e707b869e8d1eb65db /lisp | |
parent | fb20043b2fec8e8aff6354ec1396fd5ba688b76b (diff) | |
download | emacs-30ffc256abe7443a02b44490c518baf9a122b4c8.tar.gz emacs-30ffc256abe7443a02b44490c518baf9a122b4c8.tar.bz2 emacs-30ffc256abe7443a02b44490c518baf9a122b4c8.zip |
Fix regex stack overflow in gdb-mi.el when parsing complex locals
* lisp/progmodes/gdb-mi.el (gdb-jsonify-buffer): Skip string
literals with (forward-sexp) instead of matching with regex.
(Bug#29868)
Copyright-paperwork-exempt: yes
Diffstat (limited to 'lisp')
-rw-r--r-- | lisp/progmodes/gdb-mi.el | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/lisp/progmodes/gdb-mi.el b/lisp/progmodes/gdb-mi.el index 58552759b95..84b8c6b44b1 100644 --- a/lisp/progmodes/gdb-mi.el +++ b/lisp/progmodes/gdb-mi.el @@ -2717,10 +2717,10 @@ If `default-directory' is remote, full file names are adapted accordingly." (insert "]")))))) (goto-char (point-min)) (insert "{") - (let ((re (concat "\\([[:alnum:]-_]+\\)=\\({\\|\\[\\|\"\"\\|" - gdb--string-regexp "\\)"))) + (let ((re (concat "\\([[:alnum:]-_]+\\)="))) (while (re-search-forward re nil t) - (replace-match "\"\\1\":\\2" nil nil))) + (replace-match "\"\\1\":" nil nil) + (if (eq (char-after) ?\") (forward-sexp) (forward-char)))) (goto-char (point-max)) (insert "}"))) |