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
aug...@gmail.com
(201) 280-8138
From 4e067b1297c7fbab8ca90ca8747efe2a39b55793 Mon Sep 17 00:00:00 2001
From: August Sodora <aug...@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

_______________________________________________
LibreOffice mailing list
LibreOffice@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice

Reply via email to