aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergio Durigan Junior <sergiodj@redhat.com>2017-12-08 15:33:55 -0500
committerSergio Durigan Junior <sergiodj@redhat.com>2017-12-08 15:33:55 -0500
commit92469284a650232768523564f2c715c4ebb57906 (patch)
tree3393e764d2e67ab28c03c95f1cf4421881f44094
parentf17d9474776e50ae47aa71c52211ea6e21adf5d5 (diff)
downloadbinutils-92469284a650232768523564f2c715c4ebb57906.zip
binutils-92469284a650232768523564f2c715c4ebb57906.tar.gz
binutils-92469284a650232768523564f2c715c4ebb57906.tar.bz2
Fix thinko on dtrace-probe.c:dtrace_process_dof_probe
While investigating PR gdb/22557 ("Regression: gdb.base/dtrace-probe.exp"), I noticed that the code is wrongly declaring a new "expression_up" variable inside the TRY block in "dtrace_process_dof_probe". This causes the outter "expr" variable to be empty, which may have an impact later when evaluating the expression. This commit fixes that. Unfortunately the script used to test DTrace probes (gdb/testsuite/lib/pdtrace.in) is not very reliable so I cannot say whether this commit fixes the PR mentioned above. Nonetheless, it's an obvious fix and should go in. gdb/ChangeLog: 2017-12-08 Sergio Durigan Junior <sergiodj@redhat.com> * dtrace-probe.c (dtrace_process_dof_probe): Do not declare a new "expression_up" inside the TRY block.
-rw-r--r--gdb/ChangeLog5
-rw-r--r--gdb/dtrace-probe.c9
2 files changed, 9 insertions, 5 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 7d061c8..26cf18e 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,8 @@
+2017-12-08 Sergio Durigan Junior <sergiodj@redhat.com>
+
+ * dtrace-probe.c (dtrace_process_dof_probe): Do not declare a new
+ "expression_up" inside the TRY block.
+
2017-12-08 Yao Qi <yao.qi@linaro.org>
* breakpoint.c (update_watchpoint): Call
diff --git a/gdb/dtrace-probe.c b/gdb/dtrace-probe.c
index 1c88f89..3314445 100644
--- a/gdb/dtrace-probe.c
+++ b/gdb/dtrace-probe.c
@@ -486,17 +486,16 @@ dtrace_process_dof_probe (struct objfile *objfile,
TRY
{
- expression_up expr
- = parse_expression_with_language (type_str.c_str (),
- language_c);
+ expr = parse_expression_with_language (type_str.c_str (),
+ language_c);
}
CATCH (ex, RETURN_MASK_ERROR)
{
}
END_CATCH
- if (expr != NULL && expr->elts[0].opcode == OP_TYPE)
- type = expr->elts[1].type;
+ if (expr != NULL && expr.get ()->elts[0].opcode == OP_TYPE)
+ type = expr.get ()->elts[1].type;
args.emplace_back (type, std::move (type_str), std::move (expr));
}