[Spice-devel] [vdagent-win PATCH v4 10/19] Use std::unique_ptr for _desktop_layout

Frediano Ziglio fziglio at redhat.com
Mon Jul 2 07:43:49 UTC 2018


Make automatic the release of this pointer.
Also avoids having a leak if VDAgent::run is called twice.

Signed-off-by: Frediano Ziglio <fziglio at redhat.com>
---
 vdagent/vdagent.cpp | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/vdagent/vdagent.cpp b/vdagent/vdagent.cpp
index 73fd2e3..0672516 100644
--- a/vdagent/vdagent.cpp
+++ b/vdagent/vdagent.cpp
@@ -141,7 +141,7 @@ private:
     bool _running;
     bool _session_is_locked;
     bool _desktop_switch;
-    DesktopLayout* _desktop_layout;
+    std::unique_ptr<DesktopLayout> _desktop_layout;
     bool _updating_display_config;
     DisplaySetting _display_setting;
     FileXfer _file_xfer;
@@ -196,7 +196,6 @@ VDAgent::VDAgent()
     , _running (false)
     , _session_is_locked (false)
     , _desktop_switch (false)
-    , _desktop_layout (NULL)
     , _display_setting (VD_AGENT_REGISTRY_KEY)
     , _vio_serial (INVALID_HANDLE_VALUE)
     , _read_pos (0)
@@ -299,7 +298,7 @@ bool VDAgent::run()
         cleanup();
         return false;
     }
-    _desktop_layout = new DesktopLayout();
+    _desktop_layout.reset(new DesktopLayout());
     if (_desktop_layout->get_display_count() == 0) {
         vd_printf("No QXL devices!");
     }
@@ -340,7 +339,6 @@ void VDAgent::cleanup()
     CloseHandle(_stop_event);
     CloseHandle(_control_event);
     CloseHandle(_vio_serial);
-    delete _desktop_layout;
 }
 
 void VDAgent::set_control_event(control_command_t control_command)
-- 
2.17.1



More information about the Spice-devel mailing list