summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Hammond <chipx86@chipx86.com>2007-02-15 10:10:32 +0000
committerChristian Hammond <chipx86@chipx86.com>2007-02-15 10:10:32 +0000
commit89d870259f1e00901a99e1da1041ac4e202a80d4 (patch)
tree5245b575d46d9f7d6561fb8de4471ffe4604e927
parentf482d2ef94a65452887f9ffae7a73109dc11cbab (diff)
downloadlibnotify-89d870259f1e00901a99e1da1041ac4e202a80d4.tar.gz
Fix some memory leaks when appending data to a message. Scary, horrible, traumatizing memory leaks. Actually it's pretty bad, though, so new release coming up soon. This fixes bug #112.
-rw-r--r--ChangeLog7
-rw-r--r--libnotify/notification.c56
2 files changed, 26 insertions, 37 deletions
diff --git a/ChangeLog b/ChangeLog
index 5aa005a..c207a71 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+Thu Feb 15 02:06:11 PST 2007 Christian Hammond <chipx86@chipx86.com>
+
+ * libnotify/notification.c:
+ - Fix some memory leaks when appending data to a message. Scary,
+ horrible, traumatizing memory leaks. Actually it's pretty bad,
+ though, so new release coming up soon. This fixes bug #112.
+
Thu Feb 15 01:58:52 PST 2007 Christian Hammond <chipx86@chipx86.com>
* tests/test-image.c:
diff --git a/libnotify/notification.c b/libnotify/notification.c
index 98773e5..aee5979 100644
--- a/libnotify/notification.c
+++ b/libnotify/notification.c
@@ -856,60 +856,42 @@ notify_notification_set_urgency(NotifyNotification *notification,
}
#if CHECK_DBUS_VERSION(0, 60)
-static gboolean
+static void
_gvalue_array_append_int(GValueArray *array, gint i)
{
- GValue *value = g_new0(GValue, 1);
-
- if (value == NULL)
- return FALSE;
-
- g_value_init(value, G_TYPE_INT);
- g_value_set_int(value, i);
- g_value_array_append(array, value);
+ GValue value = {0};
- return TRUE;
+ g_value_init(&value, G_TYPE_INT);
+ g_value_set_int(&value, i);
+ g_value_array_append(array, &value);
+ g_value_unset(&value);
}
-static gboolean
+static void
_gvalue_array_append_bool(GValueArray *array, gboolean b)
{
- GValue *value = g_new0(GValue, 1);
-
- if (value == NULL)
- return FALSE;
-
- g_value_init(value, G_TYPE_BOOLEAN);
- g_value_set_boolean(value, b);
- g_value_array_append(array, value);
+ GValue value = {0};
- return TRUE;
+ g_value_init(&value, G_TYPE_BOOLEAN);
+ g_value_set_boolean(&value, b);
+ g_value_array_append(array, &value);
+ g_value_unset(&value);
}
-static gboolean
+static void
_gvalue_array_append_byte_array(GValueArray *array, guchar *bytes, gsize len)
{
GArray *byte_array;
- GValue *value;
+ GValue value = {0};
byte_array = g_array_sized_new(FALSE, FALSE, sizeof(guchar), len);
-
- if (byte_array == NULL)
- return FALSE;
-
+ g_assert(byte_array != NULL);
byte_array = g_array_append_vals(byte_array, bytes, len);
- if ((value = g_new0(GValue, 1)) == NULL)
- {
- g_array_free(byte_array, TRUE);
- return FALSE;
- }
-
- g_value_init(value, DBUS_TYPE_G_UCHAR_ARRAY);
- g_value_set_boxed_take_ownership(value, byte_array);
- g_value_array_append(array, value);
-
- return TRUE;
+ g_value_init(&value, DBUS_TYPE_G_UCHAR_ARRAY);
+ g_value_set_boxed_take_ownership(&value, byte_array);
+ g_value_array_append(array, &value);
+ g_value_unset(&value);
}
#endif /* D-BUS >= 0.60 */