From: oetiker Date: Tue, 17 Aug 2010 21:41:03 +0000 (+0000) Subject: hunting down pango allocation issues ... now the memory loss in rrd_graph seems to... X-Git-Url: https://git.tokkee.org/?a=commitdiff_plain;h=506c77a912e3ad415adb30d712feaffb4546e4d1;p=rrdtool-all.git hunting down pango allocation issues ... now the memory loss in rrd_graph seems to be independant of the number of graphs generated. fix for #208 git-svn-id: svn://svn.oetiker.ch/rrdtool/branches/1.4@2117 a5681a0c-68f1-0310-ab6d-d61299d08faa --- diff --git a/program/src/rrd_graph.c b/program/src/rrd_graph.c index b23a3d2f..f26966cc 100644 --- a/program/src/rrd_graph.c +++ b/program/src/rrd_graph.c @@ -336,6 +336,12 @@ int im_free( free(im->gdes[i].rpnp); } free(im->gdes); + + for (i = 0; i < DIM(text_prop);i++){ + pango_font_description_free(im->text_prop[i].font_desc); + im->text_prop[i].font_desc = NULL; + } + if (im->font_options) cairo_font_options_destroy(im->font_options); @@ -343,6 +349,8 @@ int im_free( status = cairo_status(im->cr); cairo_destroy(im->cr); } + + if (im->rendered_image) { free(im->rendered_image); } @@ -4003,6 +4011,8 @@ rrd_set_font_desc ( if (font){ strncpy(im->text_prop[prop].font, font, sizeof(text_prop[prop].font) - 1); im->text_prop[prop].font[sizeof(text_prop[prop].font) - 1] = '\0'; + /* if we already got one, drop it first */ + pango_font_description_free(im->text_prop[prop].font_desc); im->text_prop[prop].font_desc = pango_font_description_from_string( font ); }; if (size > 0){ @@ -4096,6 +4106,7 @@ void rrd_graph_init( for (i = 0; i < DIM(text_prop); i++) { im->text_prop[i].size = -1; + im->text_prop[i].font_desc = NULL; rrd_set_font_desc(im,i, deffont ? deffont : text_prop[i].font,text_prop[i].size); } @@ -4110,6 +4121,7 @@ void rrd_graph_init( pango_cairo_update_context(im->cr,context); im->layout = pango_layout_new(context); + g_object_unref (context); // im->layout = pango_cairo_create_layout(im->cr);