| 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 |
| |