<div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote">On 11 August 2014 18:02, Nils Chr. Brause <span dir="ltr"><<a href="mailto:nilschrbrause@gmail.com" target="_blank">nilschrbrause@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="">On Mon, Aug 11, 2014 at 08:36:51AM +0200, Marek Chalupa wrote:<br>
> >         proxy->flags = 0;<br>
> ><br>
><br>
> After memset, this line can be removed as well.<br>
><br>
><br>
> > @@ -331,10 +331,10 @@ wl_proxy_create_for_id(struct wl_proxy *factory,<br>
> >         if (proxy == NULL)<br>
> >                 return NULL;<br>
> ><br>
> > +       memset(proxy, 0, sizeof *proxy);<br>
> > +<br>
> >         proxy->object.interface = interface;<br>
> > -       proxy->object.implementation = NULL;<br>
> >         proxy-><a href="http://object.id" target="_blank">object.id</a> = id;<br>
> > -       proxy->dispatcher = NULL;<br>
> >         proxy->display = display;<br>
> >         proxy->queue = factory->queue;<br>
> >         proxy->flags = 0;<br>
> ><br>
><br>
> The same.<br>
><br>
<br>
</div>Yes, of course. I guess we can also remove similar lines from<br>
wl_display_connect_to_fd then? </blockquote><div><br></div><div>I think this should be in a separate patch, but let's see what say the others.<br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
New patch including this:<br>
<br>
<br>
>From ec5eff0720efd90e868711a9b58bf1a435d156ce Mon Sep 17 00:00:00 2001<br>
<div class="">From: "Nils Chr. Brause" <<a href="mailto:nilschrbrause@googlemail.com">nilschrbrause@googlemail.com</a>><br>
Date: Fri, 8 Aug 2014 18:06:16 +0200<br>
Subject: [PATCH] wayland-client: Initialize newly created wl_proxys to zero.<br>
<br>
Up until now, newly created wl_proxys (with proxy_create or<br>
wl_proxy_create_for_id) are not initialized properly after memory<br>
allocation. The wl_display object in contrast is. To prevent giving<br>
uninitialized data to the user (e.g. user_data) an appropriate memset<br>
</div>has been added. Also, after a memset members don't have to be<br>
explicitly initialized with zero anymore.<br>
<div class=""><br>
Signed-off-by: Nils Chr. Brause <<a href="mailto:nilschrbrause@googlemail.com">nilschrbrause@googlemail.com</a>><br>
---<br>
</div> src/wayland-client.c | 12 ++++--------<br>
<div class=""> 1 file changed, 4 insertions(+), 8 deletions(-)<br>
<br>
diff --git a/src/wayland-client.c b/src/wayland-client.c<br>
</div>index 3e401d3..8054999 100644<br>
--- a/src/wayland-client.c<br>
+++ b/src/wayland-client.c<br>
@@ -274,12 +274,11 @@ proxy_create(struct wl_proxy *factory, const struct wl_interface *interface)<br>
<div class="">        if (proxy == NULL)<br>
                return NULL;<br>
<br>
+       memset(proxy, 0, sizeof *proxy);<br>
+<br>
        proxy->object.interface = interface;<br>
-       proxy->object.implementation = NULL;<br>
-       proxy->dispatcher = NULL;<br>
        proxy->display = display;<br>
        proxy->queue = factory->queue;<br>
</div>-       proxy->flags = 0;<br>
        proxy->refcount = 1;<br>
<br>
        proxy-><a href="http://object.id" target="_blank">object.id</a> = wl_map_insert_new(&display->objects, 0, proxy);<br>
@@ -331,13 +330,12 @@ wl_proxy_create_for_id(struct wl_proxy *factory,<br>
<div class="">        if (proxy == NULL)<br>
                return NULL;<br>
<br>
+       memset(proxy, 0, sizeof *proxy);<br>
+<br>
        proxy->object.interface = interface;<br>
-       proxy->object.implementation = NULL;<br>
        proxy-><a href="http://object.id" target="_blank">object.id</a> = id;<br>
-       proxy->dispatcher = NULL;<br>
        proxy->display = display;<br>
        proxy->queue = factory->queue;<br>
</div>-       proxy->flags = 0;<br>
        proxy->refcount = 1;<br>
<br>
        wl_map_insert_at(&display->objects, 0, id, proxy);<br>
@@ -771,7 +769,6 @@ wl_display_connect_to_fd(int fd)<br>
        wl_list_init(&display->event_queue_list);<br>
        pthread_mutex_init(&display->mutex, NULL);<br>
        pthread_cond_init(&display->reader_cond, NULL);<br>
-       display->reader_count = 0;<br>
<br>
        wl_map_insert_new(&display->objects, 0, NULL);<br>
<br>
@@ -782,7 +779,6 @@ wl_display_connect_to_fd(int fd)<br>
        display->proxy.object.implementation = (void(**)(void)) &display_listener;<br>
        display->proxy.user_data = display;<br>
        display->proxy.queue = &display->default_queue;<br>
-       display->proxy.flags = 0;<br>
        display->proxy.refcount = 1;<br>
<br>
        display->connection = wl_connection_create(display->fd);<br>
<span class="HOEnZb"><font color="#888888">--<br>
2.0.4<br>
</font></span></blockquote></div><br></div></div>