[PD] back to memory allocation troubles

Miller Puckette mpuckett at man104-1.ucsd.edu
Thu Aug 30 21:05:09 CEST 2001


Hi Krzysztof,

I finally got the two easy memory leak patches into my code (three
binbuf_free() calls.)  The one about the "subcanvas" object will go away
when I make a big change (which I'm trying to put off until after 0.34).
The change is to make the "canvas" and "subcanvas" objects the same thing,
which should make several things simpler.

> During testing I also found a few memory leaks.  One -- the leaking
> of local binbuf in save routine -- could partly explain the
> save-close-open-crash mystery reported by Gregorio García and Greg
> Rippin. This leakage can be quite large, depending on currently saved
> patch size.  It is also very easy to stop -- canvas_saveto() of
> g_canvas.c is lacking a closing call of
> 
> +       binbuf_free(b);
>     }
> 
> There is also a very small (18 bytes) leak which happens every time
> any window is closed.  The two binbufs: t_editor::e_connectbuf and
> t_editor::e_deleted should be freed in editor_free() of g_canvas.c:
> 
> +   binbuf_free(x->e_connectbuf);
> +   binbuf_free(x->e_deleted);
>     freebytes((void *)x, sizeof(*x));
> 
> Finally there is a small (40-byte) memory amount leaking every time
> toplevel patch is closed.  It is due to not freeing memory allocated
> to parent `container' object in canvas_new():
> 
>     t_subcanvas *y = (t_subcanvas *)pd_new(subcanvas_class);
> 
> This is small, infrequent, and probably not worth the fuss, although
> there could be some danger of future bugs lurking here...
> 



More information about the Pd-list mailing list