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> 2007-09-06 Dan Williams <dcbw@redhat.com>
* introspection/nm-access-point.xml * introspection/nm-access-point.xml

View File

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