aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPer Bothner <per@bothner.com>1996-01-24 00:50:11 +0000
committerPer Bothner <per@bothner.com>1996-01-24 00:50:11 +0000
commit9293e88698823b6ea4a43fc0cea53cc2d34b53f3 (patch)
tree48456635716c8406f55ff1ed632129965d1f149a
parent533bda77040578d94e4151d6b5f9bbe63c7a9d9d (diff)
downloadgdb-9293e88698823b6ea4a43fc0cea53cc2d34b53f3.zip
gdb-9293e88698823b6ea4a43fc0cea53cc2d34b53f3.tar.gz
gdb-9293e88698823b6ea4a43fc0cea53cc2d34b53f3.tar.bz2
* ch-exp.c (parse_tuple): Error if invalid mode.
This fixes PR chill/8870.
-rw-r--r--gdb/ChangeLog2
-rw-r--r--gdb/ch-exp.c5
2 files changed, 7 insertions, 0 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 50aaf96..7f771ce 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,7 @@
Tue Jan 23 14:36:05 1996 Per Bothner <bothner@kalessin.cygnus.com>
+ * ch-exp.c (parse_tuple): Error if invalid mode.
+
* value.h (COERCE_ARRAY): Don't coerce enums.
(COERCE_ENUM): Don't COERCE_REF.
(COERCE_NUMBER): New macro (same as COERCE_ARRAY then COERCE_ENUM).
diff --git a/gdb/ch-exp.c b/gdb/ch-exp.c
index 492f376..95021e7 100644
--- a/gdb/ch-exp.c
+++ b/gdb/ch-exp.c
@@ -579,6 +579,11 @@ parse_tuple (mode)
write_exp_elt_opcode (OP_ARRAY);
if (mode)
{
+ struct type *type = check_typedef (mode);
+ if (TYPE_CODE (type) != TYPE_CODE_ARRAY
+ && TYPE_CODE (type) != TYPE_CODE_STRUCT
+ && TYPE_CODE (type) != TYPE_CODE_SET)
+ error ("invalid tuple mode");
write_exp_elt_opcode (UNOP_CAST);
write_exp_elt_type (mode);
write_exp_elt_opcode (UNOP_CAST);