[2/2] server: A being destroyed object may need to access other objects using a handle.
Alexandre Julliard
julliard at winehq.org
Fri May 24 05:24:52 CDT 2013
Dmitry Timoshkov <dmitry at baikal.ru> writes:
> Alexandre Julliard <julliard at winehq.org> wrote:
>
>> >> > --- a/server/handle.c
>> >> > +++ b/server/handle.c
>> >> > @@ -165,7 +165,6 @@ static void handle_table_destroy( struct object *obj )
>> >> > for (i = 0, entry = table->entries; i <= table->last; i++, entry++)
>> >> > {
>> >> > struct object *obj = entry->ptr;
>> >> > - entry->ptr = NULL;
>> >> > if (obj) release_object( obj );
>> >>
>> >> You can't do that, the object can't be accessed after being released.
>> >
>> > Being released doesn't mean destroyed. An object gets destroyed only if its
>> > refcount drops to 0.
>>
>> Obviously, but in general the handle will be the only reference.
>
> Then I don't understand what you mean regarding the code snippet above.
After release_object, the object will have been freed if this was the
last reference. You can't keep a pointer to it.
--
Alexandre Julliard
julliard at winehq.org
More information about the wine-devel
mailing list