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 480bf5a896819c3616387807832aa6194ebed151..8dfdfc8edf98b94b31ceae3c572873e294a32d0c 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 e18f173ad1a49b492173b7efd9c097fcf7519ebd..86de9334ce076816b485879d793fc30f98dd52d9 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 04e693cd407eff4cbdf69eb6656c5162182b006b..ddac7cad2c13ca0e35396d81706def293ca1d34a 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 1ce275db27941cc782f98384104fca5af16b3753..8c238489d707be747b2f09ea90b559f3f6b4a511 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