On Thu, Nov 06, 2025 at 05:40:02PM +0100, Markus Wichmann wrote:
> Am Thu, Nov 06, 2025 at 11:49:20AM +0300 schrieb Ivan Vetrov:
> > Hi,
> > 
> > In the cleanup function there is a loop
> > 
> >     for (i = 0; i < nclients; i++) {
> >             focus(i);
> >             killclient(NULL);
> >             XReparentWindow(dpy, clients[i]->win, root, 0, 0);
> >             unmanage(i);
> >     }
> > 
> > which is buggy because unmanage decreases the global variable nclients by
> > one and also affects the memory pointed to by clients, so it actually
> > destroys only clients with even indices. I think it can be fixed by 
> > destroying 
> > the 0th client nclients times or by iterating in reverse order (as in the 
> > attached patch).
> > 
> 
> I am wondering if the unmanage() call is even needed here. unmanage()
> seems to only clean up some memory, but cleanup() is only called when
> the process is about to end, and the kernel will clean up the memory
> more thoroughly than the application ever can.
> 
> Ciao,
> Markus
> 

I think you're right - after compiling with just unmanage() call removed,
tabbed closes properly for me.

Best,
Ivan

P.S.
I'm sorry for accidentally sending the first message multiple times.

Reply via email to