From 397df30133f82ee986e438578bf252a731478c37 Mon Sep 17 00:00:00 2001 From: oetiker Date: Tue, 17 Aug 2010 21:41:03 +0000 Subject: [PATCH] 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.3/program@2117 a5681a0c-68f1-0310-ab6d-d61299d08faa --- src/rrd_graph.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/rrd_graph.c b/src/rrd_graph.c index a65bca6..8f5f44f 100644 --- a/src/rrd_graph.c +++ b/src/rrd_graph.c @@ -325,6 +325,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); @@ -332,6 +338,8 @@ int im_free( status = cairo_status(im->cr); cairo_destroy(im->cr); } + + if (im->rendered_image) { free(im->rendered_image); } @@ -3781,6 +3789,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){ @@ -3864,6 +3874,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); } @@ -3878,6 +3889,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); -- 2.30.2