aboutsummaryrefslogtreecommitdiffstats
path: root/meta-oe/recipes-navigation/gpsd/gpsd-3.17/0001-gps_shm_close-Free-privdata.patch
blob: 9b38015800ccb84156d4eaf216e912cd49584406 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
From 2a4b3bcde0d73a3a4a6644d5f944ac9d16023ba9 Mon Sep 17 00:00:00 2001
From: Adrian Bunk <bunk@stusta.de>
Date: Mon, 21 Oct 2019 13:53:25 +0300
Subject: gps_shm_close: Free privdata

Previously every open/close cycle leaked privdata.

Signed-off-by: Adrian Bunk <bunk@stusta.de>
Signed-off-by: Gary E. Miller <gem@rellim.com>

Upstream-Status: Backport
---
 libgps_shm.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/libgps_shm.c b/libgps_shm.c
index d93972bba..12bb3760b 100644
--- a/libgps_shm.c
+++ b/libgps_shm.c
@@ -163,8 +163,12 @@ int gps_shm_read(struct gps_data_t *gpsdata)
 
 void gps_shm_close(struct gps_data_t *gpsdata)
 {
-    if (PRIVATE(gpsdata) && PRIVATE(gpsdata)->shmseg != NULL)
-	(void)shmdt((const void *)PRIVATE(gpsdata)->shmseg);
+    if (PRIVATE(gpsdata)) {
+        if (PRIVATE(gpsdata)->shmseg != NULL)
+	    (void)shmdt((const void *)PRIVATE(gpsdata)->shmseg);
+        free(PRIVATE(gpsdata));
+        gpsdata->privdata = NULL;
+    }
 }
 
 int gps_shm_mainloop(struct gps_data_t *gpsdata, int timeout,
-- 
2.20.1