2007-09-06 Dan Williams <dcbw@redhat.com>

* libnm-glib/nm-object.c
		- (nm_object_get_string_property, nm_object_get_object_path_property,
		   nm_object_get_int_property, nm_object_get_uint_property,
		   nm_object_get_boolean_property, nm_object_get_byte_property,
		   nm_object_get_double_property, nm_object_get_byte_array_property):
			clear GValues after copying their contents, fixes memory leaks
			after every property access because dbus-glib copies the values
			from the DBusMessage into the GValue already.



git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@2767 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
This commit is contained in:
Dan Williams
2007-09-06 19:17:44 +00:00
parent 5dc24dd407
commit c5d0e07d00
2 changed files with 33 additions and 7 deletions

View File

@@ -1,3 +1,14 @@
2007-09-06 Dan Williams <dcbw@redhat.com>
* libnm-glib/nm-object.c
- (nm_object_get_string_property, nm_object_get_object_path_property,
nm_object_get_int_property, nm_object_get_uint_property,
nm_object_get_boolean_property, nm_object_get_byte_property,
nm_object_get_double_property, nm_object_get_byte_array_property):
clear GValues after copying their contents, fixes memory leaks
after every property access because dbus-glib copies the values
from the DBusMessage into the GValue already.
2007-09-06 Dan Williams <dcbw@redhat.com>
* introspection/nm-access-point.xml

View File

@@ -226,8 +226,10 @@ nm_object_get_string_property (NMObject *object,
char *str = NULL;
GValue value = {0,};
if (nm_object_get_property (object, interface, prop_name, &value))
if (nm_object_get_property (object, interface, prop_name, &value)) {
str = g_strdup (g_value_get_string (&value));
g_value_unset (&value);
}
return str;
}
@@ -240,8 +242,10 @@ nm_object_get_object_path_property (NMObject *object,
char *path = NULL;
GValue value = {0,};
if (nm_object_get_property (object, interface, prop_name, &value))
if (nm_object_get_property (object, interface, prop_name, &value)) {
path = g_strdup (g_value_get_boxed (&value));
g_value_unset (&value);
}
return path;
}
@@ -254,8 +258,10 @@ nm_object_get_int_property (NMObject *object,
gint32 i = 0;
GValue value = {0,};
if (nm_object_get_property (object, interface, prop_name, &value))
if (nm_object_get_property (object, interface, prop_name, &value)) {
i = g_value_get_int (&value);
g_value_unset (&value);
}
return i;
}
@@ -268,8 +274,10 @@ nm_object_get_uint_property (NMObject *object,
guint32 i = 0;
GValue value = {0,};
if (nm_object_get_property (object, interface, prop_name, &value))
if (nm_object_get_property (object, interface, prop_name, &value)) {
i = g_value_get_uint (&value);
g_value_unset (&value);
}
return i;
}
@@ -282,8 +290,10 @@ nm_object_get_boolean_property (NMObject *object,
gboolean b = FALSE; // FIXME: somehow convey failure if needed
GValue value = {0,};
if (nm_object_get_property (object, interface, prop_name, &value))
if (nm_object_get_property (object, interface, prop_name, &value)) {
b = g_value_get_boolean (&value);
g_value_unset (&value);
}
return b;
}
@@ -296,8 +306,10 @@ nm_object_get_byte_property (NMObject *object,
gint8 b = G_MAXINT8;
GValue value = {0,};
if (nm_object_get_property (object, interface, prop_name, &value))
if (nm_object_get_property (object, interface, prop_name, &value)) {
b = g_value_get_uchar (&value);
g_value_unset (&value);
}
return b;
}
@@ -310,8 +322,10 @@ nm_object_get_double_property (NMObject *object,
gdouble d = G_MAXDOUBLE;
GValue value = {0,};
if (nm_object_get_property (object, interface, prop_name, &value))
if (nm_object_get_property (object, interface, prop_name, &value)) {
d = g_value_get_double (&value);
g_value_unset (&value);
}
return d;
}
@@ -334,6 +348,7 @@ nm_object_get_byte_array_property (NMObject *object,
byte = g_array_index (tmp, unsigned char, i);
g_byte_array_append (array, &byte, 1);
}
g_value_unset (&value);
}
return array;