This string copy in mi_cmd_disassemble seems not to be needed, so
don't do it.
gdb/ChangeLog
2017-09-29  Tom Tromey  <tom@tromey.com>
	* mi/mi-cmd-disas.c (mi_cmd_disassemble): Don't copy "oarg".
+2017-09-29  Tom Tromey  <tom@tromey.com>
+
+       * mi/mi-cmd-disas.c (mi_cmd_disassemble): Don't copy "oarg".
+
 2017-09-29  Tom Tromey  <tom@tromey.com>
 
        * varobj.h (varobj_gen_name): Return std::string.
 
   int how_many = -1;
   CORE_ADDR low = 0;
   CORE_ADDR high = 0;
-  struct cleanup *cleanups = make_cleanup (null_cleanup, NULL);
 
   /* Options processing stuff.  */
   int oind = 0;
       switch ((enum opt) opt)
        {
        case FILE_OPT:
-         file_string = xstrdup (oarg);
+         file_string = oarg;
          file_seen = 1;
-         make_cleanup (xfree, file_string);
          break;
        case LINE_OPT:
          line_num = atoi (oarg);
   gdb_disassembly (gdbarch, uiout,
                   disasm_flags,
                   how_many, low, high);
-
-  do_cleanups (cleanups);
 }