# HG changeset patch # User Nick Roberts # Date 1252713809 0 # Node ID 5e36746ef447d44eb5b5be4ec948354db0be3f3b # Parent f318da2703ab143ee0b2b5e297ba928454be6b19 (gdb-var-list-children-regexp): Delete. (gdb-var-list-children): Use json parsing. diff -r f318da2703ab -r 5e36746ef447 lisp/progmodes/gdb-mi.el --- a/lisp/progmodes/gdb-mi.el Sat Sep 12 00:02:42 2009 +0000 +++ b/lisp/progmodes/gdb-mi.el Sat Sep 12 00:03:29 2009 +0000 @@ -1054,25 +1054,20 @@ varnum) `(lambda () (gdb-var-list-children-handler ,varnum))))) -(defconst gdb-var-list-children-regexp - "child={.*?name=\"\\(.+?\\)\".*?,exp=\"\\(.+?\\)\".*?,\ -numchild=\"\\(.+?\\)\".*?,value=\\(\"\"\\|\".*?[^\\]\"\\)\ -\\(}\\|.*?,\\(type=\"\\(.+?\\)\"\\)?.*?}\\)") - (defun gdb-var-list-children-handler (varnum) - (goto-char (point-min)) - (let ((var-list nil)) - (catch 'child-already-watched + (let ((var-list nil) + (children (gdb-get-field (gdb-json-partial-output "child") 'children))) + (catch 'child-already-watched (dolist (var gdb-var-list) (if (string-equal varnum (car var)) (progn (push var var-list) - (while (re-search-forward gdb-var-list-children-regexp nil t) - (let ((varchild (list (match-string 1) - (match-string 2) - (match-string 3) - (match-string 7) - (read (match-string 4)) + (dolist (child children) + (let ((varchild (list (gdb-get-field child 'name) + (gdb-get-field child 'exp) + (gdb-get-field child 'numchild) + (gdb-get-field child 'type) + (gdb-get-field child 'value) nil))) (if (assoc (car varchild) gdb-var-list) (throw 'child-already-watched nil))