This is the mail archive of the gdb-cvs@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[binutils-gdb] Fix thinko on dtrace-probe.c:dtrace_process_dof_probe


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=92469284a650232768523564f2c715c4ebb57906

commit 92469284a650232768523564f2c715c4ebb57906
Author: Sergio Durigan Junior <sergiodj@redhat.com>
Date:   Fri Dec 8 15:33:55 2017 -0500

    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.

Diff:
---
 gdb/ChangeLog      | 5 +++++
 gdb/dtrace-probe.c | 9 ++++-----
 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));
 	}


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]