gdb
authorTom Tromey <tromey@redhat.com>
Wed, 15 Apr 2009 21:55:04 +0000 (21:55 +0000)
committerTom Tromey <tromey@redhat.com>
Wed, 15 Apr 2009 21:55:04 +0000 (21:55 +0000)
* c-lang.c (evaluate_subexp_c): Correctly handle EVAL_SKIP.
gdb/testsuite
* gdb.base/charset.exp: Add regression test.

gdb/ChangeLog
gdb/c-lang.c
gdb/testsuite/ChangeLog
gdb/testsuite/gdb.base/charset.exp

index 480bf5a..8dfdfc8 100644 (file)
@@ -1,3 +1,7 @@
+2009-04-15  Tom Tromey  <tromey@redhat.com>
+
+       * c-lang.c (evaluate_subexp_c): Correctly handle EVAL_SKIP.
+
 2009-04-15  Eli Zaretskii  <eliz@gnu.org>
 
        * utils.c (parse_escape): Initialize target_char to pacify GCC.
index e18f173..86de933 100644 (file)
@@ -941,7 +941,15 @@ evaluate_subexp_c (struct type *expect_type, struct expression *exp,
        *pos += 2;
 
        if (noside == EVAL_SKIP)
-         return NULL;
+         {
+           /* Return a dummy value of the appropriate type.  */
+           if ((dest_type & C_CHAR) != 0)
+             result = allocate_value (type);
+           else
+             result = value_typed_string ("", 0, type);
+           do_cleanups (cleanup);
+           return result;
+         }
 
        if ((dest_type & C_CHAR) != 0)
          {
index 04e693c..ddac7ca 100644 (file)
@@ -1,3 +1,7 @@
+2009-04-15  Tom Tromey  <tromey@redhat.com>
+
+       * gdb.base/charset.exp: Add regression test.
+
 2009-04-14  Joel Brobecker  <brobecker@adacore.com>
 
        * gdb.base/exe-lock.exp: New testcase.
index 1ce275d..8c23848 100644 (file)
@@ -604,4 +604,9 @@ if {$ucs2_ok && $ucs4_ok} {
     test_combination u UCS-2 U UCS-4
 }
 
+# Regression test for a cleanup bug in the charset code.
+gdb_test "print 'a' == 'a' || 'b' == 'b'" \
+  ".* = 1" \
+  "EVAL_SKIP cleanup handling regression test"
+
 gdb_exit