aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Tromey <tromey@redhat.com>2009-04-15 21:55:04 +0000
committerTom Tromey <tromey@redhat.com>2009-04-15 21:55:04 +0000
commit334cc82d44775325475752b1126a3257b51b2b0c (patch)
treee7ff2bd8ba5616e0ad8f236b60ebf19ece961c68
parent27e3013dec60479105b8c69995b41e909e09d252 (diff)
downloadgdb-334cc82d44775325475752b1126a3257b51b2b0c.zip
gdb-334cc82d44775325475752b1126a3257b51b2b0c.tar.gz
gdb-334cc82d44775325475752b1126a3257b51b2b0c.tar.bz2
gdb
* c-lang.c (evaluate_subexp_c): Correctly handle EVAL_SKIP. gdb/testsuite * gdb.base/charset.exp: Add regression test.
-rw-r--r--gdb/ChangeLog4
-rw-r--r--gdb/c-lang.c10
-rw-r--r--gdb/testsuite/ChangeLog4
-rw-r--r--gdb/testsuite/gdb.base/charset.exp5
4 files changed, 22 insertions, 1 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 480bf5a..8dfdfc8 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -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.
diff --git a/gdb/c-lang.c b/gdb/c-lang.c
index e18f173..86de933 100644
--- a/gdb/c-lang.c
+++ b/gdb/c-lang.c
@@ -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)
{
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index 04e693c..ddac7ca 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -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.
diff --git a/gdb/testsuite/gdb.base/charset.exp b/gdb/testsuite/gdb.base/charset.exp
index 1ce275d..8c23848 100644
--- a/gdb/testsuite/gdb.base/charset.exp
+++ b/gdb/testsuite/gdb.base/charset.exp
@@ -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