Hi,

On 08/31/2010 10:30 AM, Alon Levy wrote:
diff --git a/client/red_client.cpp b/client/red_client.cpp
index 6c6e066..e1a322e 100644
--- a/client/red_client.cpp
+++ b/client/red_client.cpp
@@ -75,6 +75,12 @@ private:
      RedClient&  _client;
  };

+uint32_t default_agent_caps[] = {
+    (1<<  VD_AGENT_CAP_MOUSE_STATE) |
+    (1<<  VD_AGENT_CAP_MONITORS_CONFIG) |
+    (1<<  VD_AGENT_CAP_REPLY)
+    };
+
  void ClipboardEvent::response(AbstractProcessLoop&  events_loop)
  {
      static_cast<RedClient*>(events_loop.get_owner())->send_agent_clipboard();
@@ -328,8 +334,8 @@ RedClient::RedClient(Application&  application)
      , _agent_out_msg_pos (0)
      , _agent_tokens (0)
      , _agent_timer (new AgentTimer())
-    , _agent_caps_size(0)
-    , _agent_caps(NULL)
+    , 
_agent_caps_size(sizeof(default_agent_caps)/sizeof(default_agent_caps[0]))
+    , _agent_caps(default_agent_caps)
      , _migrate (*this)
      , _glz_window (0, _glz_debug)
  {

This won't work, _agent_caps is supposed to be a dynamically allocated
array of uint32_t, and gets cleaned up with delete[], but now
you'll end up passing delete[] the address of an array in the data
segment, which is bad (as in it will crash bad).

Regards,

Hans
_______________________________________________
Spice-devel mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/spice-devel

Reply via email to