[glib: 1/2] tests: Fix leak of dlopened module in pollable test




commit 57a5ed3d086d94e27a76a3aa8e7736507d82fc68
Author: Philip Withnall <pwithnall endlessos org>
Date:   Tue Feb 9 11:06:53 2021 +0000

    tests: Fix leak of dlopened module in pollable test
    
    Coverity CID: #1446243
    
    Signed-off-by: Philip Withnall <pwithnall endlessos org>

 gio/tests/pollable.c | 14 +++++++++++---
 1 file changed, 11 insertions(+), 3 deletions(-)
---
diff --git a/gio/tests/pollable.c b/gio/tests/pollable.c
index 9a2a3cc8c..01049788b 100644
--- a/gio/tests/pollable.c
+++ b/gio/tests/pollable.c
@@ -187,25 +187,28 @@ test_pollable_unix_pty (void)
 {
   int (*openpty_impl) (int *, int *, char *, void *, void *);
   int a, b, status;
+#ifdef __linux__
+  void *handle;
+#endif
 
   g_test_summary ("Test that PTYs are considered pollable");
 
 #ifdef __linux__
-  dlopen ("libutil.so", RTLD_GLOBAL | RTLD_LAZY);
+  handle = dlopen ("libutil.so", RTLD_GLOBAL | RTLD_LAZY);
 #endif
 
   openpty_impl = dlsym (RTLD_DEFAULT, "openpty");
   if (openpty_impl == NULL)
     {
       g_test_skip ("System does not support openpty()");
-      return;
+      goto close_libutil;
     }
 
   status = openpty_impl (&a, &b, NULL, NULL, NULL);
   if (status == -1)
     {
       g_test_skip ("Unable to open PTY");
-      return;
+      goto close_libutil;
     }
 
   in = G_POLLABLE_INPUT_STREAM (g_unix_input_stream_new (a, TRUE));
@@ -218,6 +221,11 @@ test_pollable_unix_pty (void)
 
   close (a);
   close (b);
+
+close_libutil:
+#ifdef __linux__
+  dlclose (handle);
+#endif
 }
 
 static void


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]