https://bugs.winehq.org/show_bug.cgi?id=46180
--- Comment #2 from Ralf Habacker ralf.habacker@freenet.de --- According to https://github.com/wine-mirror/wine/blob/master/server/class.c#L84 destroy_process_classes() is implemented as
void destroy_process_classes( struct process *process ) { struct list *ptr;
while ((ptr = list_head( &process->classes ))) { struct window_class *class = LIST_ENTRY( ptr, struct window_class, entry ); destroy_class( class ); } }
and uses also destroy_class(), but destroy_class() does not release the atom(s).
BTW: destroy_class() is also called from UnregisterClass() (https://github.com/wine-mirror/wine/blob/master/server/class.c#L234), which means relasing the atom need to be in destroy_class() to cover both cases.