5db4c14
http://sourceware.org/ml/gdb-patches/2009-04/msg00356.html
5db4c14
http://sourceware.org/ml/gdb-cvs/2009-04/msg00081.html
5db4c14
5db4c14
gdb/
5db4c14
2009-04-15  Tom Tromey  <tromey@redhat.com>
5db4c14
5db4c14
	* c-lang.c (evaluate_subexp_c): Correctly handle EVAL_SKIP.
5db4c14
5db4c14
gdb/testsuite/
5db4c14
2009-04-15  Tom Tromey  <tromey@redhat.com>
5db4c14
5db4c14
	* gdb.base/charset.exp: Add regression test.
5db4c14
5db4c14
--- src/gdb/c-lang.c	2009/04/14 21:54:33	1.64
5db4c14
+++ src/gdb/c-lang.c	2009/04/15 21:55:04	1.65
5db4c14
@@ -941,7 +941,15 @@
5db4c14
 	*pos += 2;
5db4c14
 
5db4c14
 	if (noside == EVAL_SKIP)
5db4c14
-	  return NULL;
5db4c14
+	  {
5db4c14
+	    /* Return a dummy value of the appropriate type.  */
5db4c14
+	    if ((dest_type & C_CHAR) != 0)
5db4c14
+	      result = allocate_value (type);
5db4c14
+	    else
5db4c14
+	      result = value_typed_string ("", 0, type);
5db4c14
+	    do_cleanups (cleanup);
5db4c14
+	    return result;
5db4c14
+	  }
5db4c14
 
5db4c14
 	if ((dest_type & C_CHAR) != 0)
5db4c14
 	  {
5db4c14
--- src/gdb/testsuite/gdb.base/charset.exp	2009/03/25 19:25:49	1.13
5db4c14
+++ src/gdb/testsuite/gdb.base/charset.exp	2009/04/15 21:55:04	1.14
5db4c14
@@ -604,4 +604,9 @@
5db4c14
     test_combination u UCS-2 U UCS-4
5db4c14
 }
5db4c14
 
5db4c14
+# Regression test for a cleanup bug in the charset code.
5db4c14
+gdb_test "print 'a' == 'a' || 'b' == 'b'" \
5db4c14
+  ".* = 1" \
5db4c14
+  "EVAL_SKIP cleanup handling regression test"
5db4c14
+
5db4c14
 gdb_exit