Subject: Patch to fix this bug

From: Jim Blandy <[email-masked]>
Date: Wed, 8 Feb 2012 13:04:36 -0800

Attached is a patch to fix this bug.
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index be12a73..00cd7db 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -156,6 +156,13 @@
 
 	* ido.el (ido-find-file): Doc fix (ido-toggle-vc not on any key).
 
+2012-02-04  Jim Blandy  <[email-masked]>
+
+	* progmodes/gdb-mi.el (gdb-mi-quote): New function.
+	(gdb-send): Apply it to the operand of the '-interpreter-exec
+	console' command, so that we can pass arguments with (say) quotes
+	in them.
+
 2012-02-03  Glenn Morris  <[email-masked]>
 
 	* image.el (image-animated-p): Doc fix.  Use image-animated-types.
diff --git a/lisp/progmodes/gdb-mi.el b/lisp/progmodes/gdb-mi.el
index 301714e..6ffb67e 100644
--- a/lisp/progmodes/gdb-mi.el
+++ b/lisp/progmodes/gdb-mi.el
@@ -1672,8 +1672,6 @@ static char *magick[] = {
   (if (not (string= "" string))
       (setq gdb-last-command string)
     (if gdb-last-command (setq string gdb-last-command)))
-  (if gdb-enable-debug
-      (push (cons 'mi-send (concat string "\n")) gdb-debug-log))
   (if (string-match "^-" string)
       ;; MI command
       (progn
@@ -1683,10 +1681,23 @@ static char *magick[] = {
     (if (string-match "\\\\$" string)
 	(setq gdb-continuation (concat gdb-continuation string "\n"))
       (setq gdb-first-done-or-error t)
-      (process-send-string proc (concat "-interpreter-exec console \""
-					gdb-continuation string "\"\n"))
+      (let ((to-send (concat "-interpreter-exec console "
+                             (gdb-mi-quote string)
+                             "\n")))
+        (if gdb-enable-debug
+            (push (cons 'mi-send to-send) gdb-debug-log))
+        (process-send-string proc to-send))
       (setq gdb-continuation nil))))
 
+(defun gdb-mi-quote (string)
+  "Return STRING quoted properly as an MI argument.
+The string is enclosed in double quotes.
+All embedded quotes are replaced with \"\\\"\".
+All embedded newlines are replaced with \"\\n\"."
+  (let* ((quotes (replace-regexp-in-string "\"" "\\\"" string t t))
+         (newlines (replace-regexp-in-string "\n" "\\n" quotes t t)))
+    (concat "\"" newlines "\"")))
+
 (defun gdb-input (command handler-function)
   "Send COMMAND to GDB via the MI interface.
 Run the function HANDLER-FUNCTION, with no arguments, once the command is