Alexandre Julliard <julli...@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.
If you know how to fix this properly - please go ahead, I won't be able to investigate this till next week. -- Dmitry.