Date: prev next · Thread: first prev next last
2011 Archives by date, by thread · List index


Hello,

I was a little curious about valgrind so I ran it against soffice and
found a few memory leaks. The two that I looked at are very minor but
I figured I'd try them to start with. The attached patch corrects the
first and the second I had difficulty understanding.

The first is caused by not calling XFreeGC when the splash screen closes:

==11027== 160 bytes in 1 blocks are definitely lost in loss record 7 of 8
==11027==    at 0x4A06031: malloc (vg_replace_malloc.c:236)
==11027==    by 0x3FA0A215EB: XCreateGC (CrGC.c:75)
==11027==    by 0x406480: splash_create_window (splashx.c:555)
==11027==    by 0x406E44: splash_create (splashx.c:781)
==11027==    by 0x4088D3: sal_main_with_args (start.c:850)
==11027==    by 0x408755: main (start.c:789)

So hooray we save 160 bytes. The second initially makes me think that
a matching XCloseDisplay is missing but I'm not sure why the call that
is already there isn't getting called if the first leak was fixed:

==11027== 124 bytes in 1 blocks are definitely lost in loss record 6 of 8
==11027==    at 0x4A06031: malloc (vg_replace_malloc.c:236)
==11027==    by 0x3FA060BD79: get_peer_sock_name (xcb_auth.c:259)
==11027==    by 0x3FA060BE45: _xcb_get_auth_info (xcb_auth.c:302)
==11027==    by 0x3FA060B84E: xcb_connect_to_display_with_auth_info
(xcb_util.c:424)
==11027==    by 0x3FA0A4CBC9: _XConnectXCB (xcb_disp.c:92)
==11027==    by 0x3FA0A34BAA: XOpenDisplay (OpenDis.c:166)
==11027==    by 0x406008: splash_create_window (splashx.c:503)
==11027==    by 0x406E44: splash_create (splashx.c:781)
==11027==    by 0x4088D3: sal_main_with_args (start.c:850)
==11027==    by 0x408755: main (start.c:789)

August Sodora
augsod@gmail.com
(201) 280-8138
From 4e067b1297c7fbab8ca90ca8747efe2a39b55793 Mon Sep 17 00:00:00 2001
From: August Sodora <augsod@gmail.com>
Date: Thu, 17 Nov 2011 21:06:16 -0500
Subject: [PATCH] Valgrind: fixed memory leak

---
 desktop/unx/source/splashx.c |    6 ++++++
 1 files changed, 6 insertions(+), 0 deletions(-)

diff --git a/desktop/unx/source/splashx.c b/desktop/unx/source/splashx.c
index 0c7024d..3d3981d 100644
--- a/desktop/unx/source/splashx.c
+++ b/desktop/unx/source/splashx.c
@@ -744,6 +744,12 @@ void splash_destroy(struct splash* splash)
     {
         if(splash->display)
         {
+            if(splash->gc)
+            {
+                XFreeGC(splash->display, splash->gc);
+                splash->gc = NULL;
+            }
+
             XCloseDisplay( splash->display );
             splash->display = NULL;
             png_destroy_read_struct( &(splash->png_ptr), &(splash->info_ptr), NULL );
-- 
1.7.4.4


Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.