[RFA,v2,6/6] Make save_infcall_*_state return unique pointers

Message ID 20180718140904.16811-7-tom@tromey.com
State New, archived
Headers

Commit Message

Tom Tromey July 18, 2018, 2:09 p.m. UTC
  Simon pointed out that save_infcall_suspend_state and
save_infcall_control_state could return unique pointers.  This patch
implements this idea.

gdb/ChangeLog
2018-07-18  Tom Tromey  <tom@tromey.com>

	* infrun.c (save_infcall_suspend_state): Return
	infcall_suspend_state_up.
	(save_infcall_control_state): Return infcall_control_state_up.
	* inferior.h (save_infcall_suspend_state)
	(save_infcall_control_state): Declare later.  Return unique
	pointers.
---
 gdb/ChangeLog  |  9 +++++++++
 gdb/inferior.h |  7 ++++---
 gdb/infrun.c   | 13 ++++++-------
 3 files changed, 19 insertions(+), 10 deletions(-)
  

Patch

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index d786f1f3838..733b513c4b2 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,12 @@ 
+2018-07-18  Tom Tromey  <tom@tromey.com>
+
+	* infrun.c (save_infcall_suspend_state): Return
+	infcall_suspend_state_up.
+	(save_infcall_control_state): Return infcall_control_state_up.
+	* inferior.h (save_infcall_suspend_state)
+	(save_infcall_control_state): Declare later.  Return unique
+	pointers.
+
 2018-07-18  Tom Tromey  <tom@tromey.com>
 
 	* infrun.c (struct stop_context): Declare constructor,
diff --git a/gdb/inferior.h b/gdb/inferior.h
index 02fb71e4b3e..e02500fdb1e 100644
--- a/gdb/inferior.h
+++ b/gdb/inferior.h
@@ -57,9 +57,6 @@  struct thread_info;
 struct infcall_suspend_state;
 struct infcall_control_state;
 
-extern struct infcall_suspend_state *save_infcall_suspend_state (void);
-extern struct infcall_control_state *save_infcall_control_state (void);
-
 extern void restore_infcall_suspend_state (struct infcall_suspend_state *);
 extern void restore_infcall_control_state (struct infcall_control_state *);
 
@@ -77,6 +74,8 @@  struct infcall_suspend_state_deleter
 typedef std::unique_ptr<infcall_suspend_state, infcall_suspend_state_deleter>
     infcall_suspend_state_up;
 
+extern infcall_suspend_state_up save_infcall_suspend_state ();
+
 /* A deleter for infcall_control_state that calls
    restore_infcall_control_state.  */
 struct infcall_control_state_deleter
@@ -91,6 +90,8 @@  struct infcall_control_state_deleter
 typedef std::unique_ptr<infcall_control_state, infcall_control_state_deleter>
     infcall_control_state_up;
 
+extern infcall_control_state_up save_infcall_control_state ();
+
 extern void discard_infcall_suspend_state (struct infcall_suspend_state *);
 extern void discard_infcall_control_state (struct infcall_control_state *);
 
diff --git a/gdb/infrun.c b/gdb/infrun.c
index 15bdf004b1a..d74953e4417 100644
--- a/gdb/infrun.c
+++ b/gdb/infrun.c
@@ -8816,10 +8816,9 @@  struct infcall_suspend_state
   gdb::unique_xmalloc_ptr<gdb_byte> siginfo_data;
 };
 
-struct infcall_suspend_state *
-save_infcall_suspend_state (void)
+infcall_suspend_state_up
+save_infcall_suspend_state ()
 {
-  struct infcall_suspend_state *inf_state;
   struct thread_info *tp = inferior_thread ();
   struct regcache *regcache = get_current_regcache ();
   struct gdbarch *gdbarch = regcache->arch ();
@@ -8840,7 +8839,7 @@  save_infcall_suspend_state (void)
 	}
     }
 
-  inf_state = new struct infcall_suspend_state;
+  infcall_suspend_state_up inf_state (new struct infcall_suspend_state);
 
   if (siginfo_data)
     {
@@ -8920,10 +8919,10 @@  struct infcall_control_state
 /* Save all of the information associated with the inferior<==>gdb
    connection.  */
 
-struct infcall_control_state *
-save_infcall_control_state (void)
+infcall_control_state_up
+save_infcall_control_state ()
 {
-  struct infcall_control_state *inf_status = new struct infcall_control_state;
+  infcall_control_state_up inf_status (new struct infcall_control_state);
   struct thread_info *tp = inferior_thread ();
   struct inferior *inf = current_inferior ();