glib: fix memory leaks in gutils, protocol, and strfuncs tests
authorRavi Sankar Guntur <ravi.g@samsung.com>
Mon, 19 Mar 2012 15:47:32 +0000 (21:17 +0530)
committerMatthias Clasen <mclasen@redhat.com>
Thu, 17 May 2012 04:38:43 +0000 (00:38 -0400)
https://bugzilla.gnome.org/show_bug.cgi?id=672329

Signed-off-by: Ravi Sankar Guntur <ravi.g@samsung.com>
glib/gutils.c
glib/tests/protocol.c
glib/tests/strfuncs.c

index 4992ecc04708e50a61d2694b95a3f082d2714167..7765d5ace4978f1aa0cf9c6bba0fab89b4e7bb6d 100644 (file)
@@ -660,19 +660,32 @@ g_get_any_init_do (void)
   gchar hostname[100];
 
   g_tmp_dir = g_strdup (g_getenv ("TMPDIR"));
+
   if (g_tmp_dir == NULL || *g_tmp_dir == '\0')
-    g_tmp_dir = g_strdup (g_getenv ("TMP"));
+    {
+      g_free (g_tmp_dir);
+      g_tmp_dir = g_strdup (g_getenv ("TMP"));
+    }
+
   if (g_tmp_dir == NULL || *g_tmp_dir == '\0')
-    g_tmp_dir = g_strdup (g_getenv ("TEMP"));
+    {
+      g_free (g_tmp_dir);
+      g_tmp_dir = g_strdup (g_getenv ("TEMP"));
+    }
 
 #ifdef G_OS_WIN32
   if (g_tmp_dir == NULL || *g_tmp_dir == '\0')
-    g_tmp_dir = get_windows_directory_root ();
-#else  
+    {
+      g_free (g_tmp_dir);
+      g_tmp_dir = get_windows_directory_root ();
+    }
+#else
 #ifdef P_tmpdir
   if (g_tmp_dir == NULL || *g_tmp_dir == '\0')
     {
-      gsize k;    
+      gsize k;
+      g_free (g_tmp_dir);
       g_tmp_dir = g_strdup (P_tmpdir);
       k = strlen (g_tmp_dir);
       if (k > 1 && G_IS_DIR_SEPARATOR (g_tmp_dir[k - 1]))
@@ -682,7 +695,8 @@ g_get_any_init_do (void)
   
   if (g_tmp_dir == NULL || *g_tmp_dir == '\0')
     {
-      g_tmp_dir = g_strdup ("/tmp");
+      g_free (g_tmp_dir);
+      g_tmp_dir = g_strdup (g_getenv ("/tmp"));
     }
 #endif /* !G_OS_WIN32 */
   
index c40d2c0b93642ea0c95a851a16a65c520c5d303f..6aff1c13c8dbf0eb316f77260a41434671c9a300 100644 (file)
@@ -90,7 +90,7 @@ test_message_cb1 (GIOChannel  * channel,
   GIOStatus  status;
   guchar     buf[512];
   gsize      read_bytes = 0;
-
   g_assert_cmpuint (condition, ==, G_IO_IN);
 
   for (status = g_io_channel_read_chars (channel, (gchar*)buf, sizeof (buf), &read_bytes, NULL);
@@ -214,6 +214,7 @@ test_message (void)
         default:
           g_error ("unexpected log message type: %s", g_test_log_type_name (msg->log_type));
         }
+       g_test_log_msg_free (msg);
     }
 
   g_assert_cmpint (passed, ==, 3);
@@ -221,6 +222,7 @@ test_message (void)
 
   g_free (argv[1]);
   g_main_loop_unref (loop);
+  g_test_log_buffer_free (tlb);
 }
 
 static void
@@ -319,10 +321,12 @@ test_error (void)
             default:
               g_error ("unexpected log message type: %s", g_test_log_type_name (msg->log_type));
             }
+            g_test_log_msg_free (msg);
         }
 
       g_free (argv[1]);
       g_main_loop_unref (loop);
+      g_test_log_buffer_free (tlb);
     }
 
   g_assert_cmpint (messages, ==, 3);
index 358bc58d5276ce0c2d3ddd7daf74728604006539..9b2d1d652faef8fd0785aabe817e6a39fbfe7ab5 100644 (file)
@@ -1122,12 +1122,21 @@ test_bounds (void)
   g_strrstr_len (string, 4096, ".");
   g_strrstr_len (string, 4096, "");
 
-  g_ascii_strdown (string, 4096);
-  g_ascii_strdown (string, 4096);
-  g_ascii_strup (string, 4096);
-  g_ascii_strup (string, 4096);
+  tmp = g_ascii_strup (string, 4096);
+  tmp2 = g_ascii_strup (tmp, 4096);
+  g_assert_cmpint (g_ascii_strncasecmp (string, tmp, 4096), ==, 0);
+  g_assert_cmpint (g_ascii_strncasecmp (string, tmp2, 4096), ==, 0);
+  g_assert_cmpint (g_ascii_strncasecmp (tmp, tmp2, 4096), ==, 0);
+  g_free (tmp);
+  g_free (tmp2);
 
-  g_ascii_strncasecmp (string, string, 4096);
+  tmp = g_ascii_strdown (string, 4096);
+  tmp2 = g_ascii_strdown (tmp, 4096);
+  g_assert_cmpint (g_ascii_strncasecmp (string, tmp, 4096), ==, 0);
+  g_assert_cmpint (g_ascii_strncasecmp (string, tmp2, 4096), ==, 0);
+  g_assert_cmpint (g_ascii_strncasecmp (tmp, tmp2, 4096), ==, 0);
+  g_free (tmp);
+  g_free (tmp2);
 
   tmp = g_markup_escape_text (string, 4096);
   g_free (tmp);
@@ -1180,10 +1189,25 @@ test_bounds (void)
   g_assert_cmpint (strlen (tmp), ==, 4095 + 2);
   g_free (tmp);
 
-  g_ascii_strdown (string, -1);
-  g_ascii_strdown (string, -1);
-  g_ascii_strup (string, -1);
-  g_ascii_strup (string, -1);
+  tmp = g_ascii_strdown (string, -1);
+  tmp2 = g_ascii_strdown (tmp, -1);
+  g_assert_cmpint (strlen(tmp), ==, strlen(tmp2));
+  g_assert_cmpint (strlen(string), ==, strlen(tmp));
+  g_assert_cmpint (g_ascii_strncasecmp (string, tmp, -1), ==, 0);
+  g_assert_cmpint (g_ascii_strncasecmp (string, tmp2, -1), ==, 0);
+  g_assert_cmpint (g_ascii_strncasecmp (tmp, tmp2, -1), ==, 0);
+  g_free (tmp);
+  g_free (tmp2);
+
+  tmp = g_ascii_strup (string, -1);
+  tmp2 = g_ascii_strup (string, -1);
+  g_assert_cmpint (strlen(tmp), ==, strlen(tmp2));
+  g_assert_cmpint (strlen(string), ==, strlen(tmp));
+  g_assert_cmpint (g_ascii_strncasecmp (string, tmp, -1), ==, 0);
+  g_assert_cmpint (g_ascii_strncasecmp (string, tmp2, -1), ==, 0);
+  g_assert_cmpint (g_ascii_strncasecmp (tmp, tmp2, -1), ==, 0);
+  g_free (tmp);
+  g_free (tmp2);
 
   g_ascii_strcasecmp (string, string);
   g_ascii_strncasecmp (string, string, 10000);