]> git.eshelyaron.com Git - emacs.git/commitdiff
* lisp/progmodes/gdb-mi.el (gdbmi-bnf-incomplete-record-result):
authorJean-Philippe Gravel <jpgravel@gmail.com>
Wed, 17 Apr 2013 00:35:22 +0000 (20:35 -0400)
committerStefan Monnier <monnier@iro.umontreal.ca>
Wed, 17 Apr 2013 00:35:22 +0000 (20:35 -0400)
Fix adjustment of offset when receiving incomplete responses from GDB.

Fixes: debbugs:14129
lisp/ChangeLog
lisp/progmodes/gdb-mi.el

index 68ac8721bb2cc99fc08921c617189f7cc9701b07..4a9c8cb22eceda7154e54cb2cf328f1957f73513 100644 (file)
@@ -1,3 +1,9 @@
+2013-04-17  Jean-Philippe Gravel  <jpgravel@gmail.com>
+
+       * progmodes/gdb-mi.el (gdbmi-bnf-incomplete-record-result):
+       Fix adjustment of offset when receiving incomplete responses from GDB
+       (bug#14129).
+
 2013-04-16  Stefan Monnier  <monnier@iro.umontreal.ca>
 
        * progmodes/python.el (python-mode-skeleton-abbrev-table): Rename from
index 8ba2822c3a3cccf83b2a10d56f44dd1582847d54..f5e1abdd546644f8f7d8c467472caa0f440bca84 100644 (file)
@@ -2149,19 +2149,23 @@ the end of the current result or async record is reached."
     ;; Search the data stream for the end of the current record:
     (let* ((newline-pos (string-match "\n" gud-marker-acc gdbmi-bnf-offset))
           (is-progressive (equal (cdr class-command) 'progressive))
-          (is-complete (not (null newline-pos)))
-          result-str)
+       (is-complete (not (null newline-pos)))
+       result-str)
+
+      (when gdbmi-debug-mode
+        (message "gdbmi-bnf-incomplete-record-result: %s"
+                 (substring gud-marker-acc gdbmi-bnf-offset newline-pos)))
 
       ;; Update the gdbmi-bnf-offset only if the current chunk of data can
       ;; be processed by the class-command handler:
       (when (or is-complete is-progressive)
-       (setq result-str
+        (setq result-str
               (substring gud-marker-acc gdbmi-bnf-offset newline-pos))
-       (setq gdbmi-bnf-offset (+ 1 newline-pos)))
 
-      (if gdbmi-debug-mode
-          (message "gdbmi-bnf-incomplete-record-result: %s"
-                   (substring gud-marker-acc gdbmi-bnf-offset newline-pos)))
+        ;; Move gdbmi-bnf-offset past the end of the chunk.
+        (setq gdbmi-bnf-offset (+ gdbmi-bnf-offset (length result-str)))
+        (when newline-pos
+          (setq gdbmi-bnf-offset (1+ gdbmi-bnf-offset))))
 
       ;; Update the parsing state before invoking the handler in class-command
       ;; to make sure it's not left in an invalid state if the handler was