nemiver r956 - in trunk: . src/dbgengine tests



Author: dodji
Date: Thu Dec 11 13:33:08 2008
New Revision: 956
URL: http://svn.gnome.org/viewvc/nemiver?rev=956&view=rev

Log:
Fix 564113 - GDB/MI parsing error

	* src/dbgengine/nmv-gdbmi-parser.cc (GDBMIParser::parse_result_record):
	  Don't forget lines can end up abruptly.
	* tests/test-gdbmi.cc: Added a new regression test for this bug.
	This should close #564113.

Modified:
   trunk/ChangeLog
   trunk/src/dbgengine/nmv-gdbmi-parser.cc
   trunk/tests/test-gdbmi.cc

Modified: trunk/src/dbgengine/nmv-gdbmi-parser.cc
==============================================================================
--- trunk/src/dbgengine/nmv-gdbmi-parser.cc	(original)
+++ trunk/src/dbgengine/nmv-gdbmi-parser.cc	Thu Dec 11 13:33:08 2008
@@ -4860,7 +4860,7 @@
         return false;
     }
 
-    if (RAW_CHAR_AT (cur) != '\n') {
+    if (RAW_CHAR_AT (cur) != '\n' && !m_priv->index_passed_end (cur)) {
         LOG_PARSING_ERROR2 (cur);
         return false;
     }
@@ -5949,7 +5949,7 @@
         SKIP_BLANK2 (cur);
         if (RAW_CHAR_AT (cur) != '"') {
             UString value ;
-            if (!parse_c_string_body (cur, m_priv->end, value)) {
+            if (!parse_c_string_body (cur, cur, value)) {
                 LOG_PARSING_ERROR2 (cur);
                 return false;
             }

Modified: trunk/tests/test-gdbmi.cc
==============================================================================
--- trunk/tests/test-gdbmi.cc	(original)
+++ trunk/tests/test-gdbmi.cc	Thu Dec 11 13:33:08 2008
@@ -43,6 +43,11 @@
 "*running,thread-id=\"1\"n"
 "(gdb)";
 
+static const char *gv_output_record2=
+"^done,value=\"{tree (int, int, int, tree, tree)} 0x483c2f <build_template_parm_index>\"\n"
+"(gdb)";
+
+
 //the partial result of a gdbmi command: -stack-list-argument 1 command
 //this command is used to implement IDebugger::list_frames_arguments()
 static const char* gv_stack_arguments0 =
@@ -251,6 +256,10 @@
     parser.push_input (gv_output_record1);
     is_ok = parser.parse_output_record (0, to, output);
     BOOST_REQUIRE (is_ok) ;
+
+    parser.push_input (gv_output_record2);
+    is_ok = parser.parse_output_record (0, to, output);
+    BOOST_REQUIRE (is_ok) ;
 }
 
 void



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]