From 68f2f2e308a8585c39ddb2f391a9ae8d779c5029 Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Thu, 11 May 2017 19:50:47 -0600 Subject: [PATCH] Fix rust_dump_subexp_body rust_dump_subexp_body was not correct in a couple of cases. While debugging the bug I was really interested in, this caused a crash. This patch fixes the problems. No test case because, IIRC there generally aren't tests for expression dumping. ChangeLog 2017-05-12 Tom Tromey * rust-lang.c (rust_dump_subexp_body) : Fix. --- gdb/ChangeLog | 5 +++++ gdb/rust-lang.c | 5 +++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index b4caf1f43d9..c2d3f2d3dac 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2017-05-12 Tom Tromey + + * rust-lang.c (rust_dump_subexp_body) : Fix. + 2017-05-12 Tom Tromey * rust-lang.c (rust_print_subexp): Replace "return" with "break". diff --git a/gdb/rust-lang.c b/gdb/rust-lang.c index dc48ff9dbf7..b4a529d58a4 100644 --- a/gdb/rust-lang.c +++ b/gdb/rust-lang.c @@ -1951,14 +1951,15 @@ rust_dump_subexp_body (struct expression *exp, struct ui_file *stream, { int field_number; - field_number = longest_to_int (exp->elts[elt].longconst); + field_number = longest_to_int (exp->elts[elt + 1].longconst); fprintf_filtered (stream, "Field number: %d", field_number); - elt = dump_subexp (exp, stream, elt + 2); + elt = dump_subexp (exp, stream, elt + 3); } break; case OP_RUST_ARRAY: + ++elt; break; default: -- 2.30.2