[libvirt] [libvirt-glib] All string getters should return 'const'

Zeeshan Ali (Khattak) zeeshanak at gnome.org
Wed Mar 7 04:02:06 UTC 2012


From: "Zeeshan Ali (Khattak)" <zeeshanak at gnome.org>

There is no need for all the memory (de)allocations and especially
forcing the app developers to free the strings. They can always
g_strdup() the returned string if they need.
---
 libvirt-gconfig/libvirt-gconfig-domain-disk.c      |   13 ++---
 libvirt-gconfig/libvirt-gconfig-domain-disk.h      |    8 ++--
 libvirt-gconfig/libvirt-gconfig-domain-graphics.c  |    3 +-
 libvirt-gconfig/libvirt-gconfig-domain-interface.c |    9 ++--
 libvirt-gconfig/libvirt-gconfig-domain-interface.h |    6 +-
 libvirt-gconfig/libvirt-gconfig-domain.c           |    8 ++--
 libvirt-gconfig/libvirt-gconfig-domain.h           |    4 +-
 libvirt-gconfig/libvirt-gconfig-helpers-private.h  |   16 +++---
 libvirt-gconfig/libvirt-gconfig-helpers.c          |   54 +++++++++----------
 libvirt-gconfig/libvirt-gconfig-object-private.h   |   10 ++--
 libvirt-gconfig/libvirt-gconfig-object.c           |   13 ++---
 libvirt-gconfig/tests/test-domain-create.c         |   18 ++++---
 libvirt-gconfig/tests/test-domain-parse.c          |    3 +-
 libvirt-gobject/libvirt-gobject-domain-disk.c      |   10 ++--
 libvirt-gobject/libvirt-gobject-domain-interface.c |    7 +--
 15 files changed, 87 insertions(+), 95 deletions(-)

diff --git a/libvirt-gconfig/libvirt-gconfig-domain-disk.c b/libvirt-gconfig/libvirt-gconfig-domain-disk.c
index afa7eda..2944739 100644
--- a/libvirt-gconfig/libvirt-gconfig-domain-disk.c
+++ b/libvirt-gconfig/libvirt-gconfig-domain-disk.c
@@ -76,16 +76,15 @@ gvir_config_domain_disk_new_from_tree(GVirConfigXmlDoc *doc,
     GVirConfigObject *object;
     GVirConfigDomainDisk *disk;
     GVirConfigDomainDiskType type;
-    xmlChar *type_str;
+    const xmlChar *type_str;
 
     type_str = gvir_config_xml_get_attribute_content(tree, "type");
     if (type_str == NULL)
         return NULL;
 
     type = gvir_config_genum_get_value(GVIR_CONFIG_TYPE_DOMAIN_DISK_TYPE,
-                                       (char *)type_str,
+                                       (const char *)type_str,
                                        GVIR_CONFIG_DOMAIN_DISK_FILE);
-    xmlFree(type_str);
     if (type == -1)
         return NULL;
 
@@ -236,7 +235,7 @@ gvir_config_domain_disk_get_snapshot_type(GVirConfigDomainDisk *disk)
                                                   GVIR_CONFIG_DOMAIN_DISK_SNAPSHOT_NO);
 }
 
-char *
+const char *
 gvir_config_domain_disk_get_source(GVirConfigDomainDisk *disk)
 {
     const char *attribute_name;
@@ -263,7 +262,7 @@ gvir_config_domain_disk_get_source(GVirConfigDomainDisk *disk)
                                             "source", attribute_name);
 }
 
-char *
+const char *
 gvir_config_domain_disk_get_driver_name(GVirConfigDomainDisk *disk)
 {
     g_return_val_if_fail(GVIR_CONFIG_IS_DOMAIN_DISK(disk), NULL);
@@ -272,7 +271,7 @@ gvir_config_domain_disk_get_driver_name(GVirConfigDomainDisk *disk)
                                             "driver", "name");
 }
 
-char *
+const char *
 gvir_config_domain_disk_get_driver_type(GVirConfigDomainDisk *disk)
 {
     g_return_val_if_fail(GVIR_CONFIG_IS_DOMAIN_DISK(disk), NULL);
@@ -307,7 +306,7 @@ gvir_config_domain_disk_get_target_bus(GVirConfigDomainDisk *disk)
                                                   GVIR_CONFIG_DOMAIN_DISK_BUS_IDE);
 }
 
-char *
+const char *
 gvir_config_domain_disk_get_target_dev(GVirConfigDomainDisk *disk)
 {
     g_return_val_if_fail(GVIR_CONFIG_IS_DOMAIN_DISK(disk), NULL);
diff --git a/libvirt-gconfig/libvirt-gconfig-domain-disk.h b/libvirt-gconfig/libvirt-gconfig-domain-disk.h
index 4b16b80..916421d 100644
--- a/libvirt-gconfig/libvirt-gconfig-domain-disk.h
+++ b/libvirt-gconfig/libvirt-gconfig-domain-disk.h
@@ -123,12 +123,12 @@ void gvir_config_domain_disk_set_target_dev(GVirConfigDomainDisk *disk,
 GVirConfigDomainDiskType gvir_config_domain_disk_get_disk_type(GVirConfigDomainDisk *disk);
 GVirConfigDomainDiskGuestDeviceType gvir_config_domain_disk_get_guest_device_type(GVirConfigDomainDisk *disk);
 GVirConfigDomainDiskSnapshotType gvir_config_domain_disk_get_snapshot_type(GVirConfigDomainDisk *disk);
-char *gvir_config_domain_disk_get_source(GVirConfigDomainDisk *disk);
+const char *gvir_config_domain_disk_get_source(GVirConfigDomainDisk *disk);
 GVirConfigDomainDiskCacheType gvir_config_domain_disk_get_driver_cache(GVirConfigDomainDisk *disk);
-char *gvir_config_domain_disk_get_driver_name(GVirConfigDomainDisk *disk);
-char *gvir_config_domain_disk_get_driver_type(GVirConfigDomainDisk *disk);
+const char *gvir_config_domain_disk_get_driver_name(GVirConfigDomainDisk *disk);
+const char *gvir_config_domain_disk_get_driver_type(GVirConfigDomainDisk *disk);
 GVirConfigDomainDiskBus gvir_config_domain_disk_get_target_bus(GVirConfigDomainDisk *disk);
-char *gvir_config_domain_disk_get_target_dev(GVirConfigDomainDisk *disk);
+const char *gvir_config_domain_disk_get_target_dev(GVirConfigDomainDisk *disk);
 void gvir_config_domain_disk_set_readonly(GVirConfigDomainDisk *disk,
                                           gboolean readonly);
 
diff --git a/libvirt-gconfig/libvirt-gconfig-domain-graphics.c b/libvirt-gconfig/libvirt-gconfig-domain-graphics.c
index 05a2f01..c79406e 100644
--- a/libvirt-gconfig/libvirt-gconfig-domain-graphics.c
+++ b/libvirt-gconfig/libvirt-gconfig-domain-graphics.c
@@ -53,7 +53,7 @@ G_GNUC_INTERNAL GVirConfigDomainDevice *
 gvir_config_domain_graphics_new_from_tree(GVirConfigXmlDoc *doc,
                                           xmlNodePtr tree)
 {
-    xmlChar *type;
+    const xmlChar *type;
     GType gtype;
 
     type = gvir_config_xml_get_attribute_content(tree, "type");
@@ -74,7 +74,6 @@ gvir_config_domain_graphics_new_from_tree(GVirConfigXmlDoc *doc,
         g_debug("Unknown graphics node: %s", type);
         return NULL;
     }
-    xmlFree(type);
 
     return GVIR_CONFIG_DOMAIN_DEVICE(gvir_config_object_new_from_tree(gtype, doc, NULL, tree));
 
diff --git a/libvirt-gconfig/libvirt-gconfig-domain-interface.c b/libvirt-gconfig/libvirt-gconfig-domain-interface.c
index 5fe27a1..6f539a2 100644
--- a/libvirt-gconfig/libvirt-gconfig-domain-interface.c
+++ b/libvirt-gconfig/libvirt-gconfig-domain-interface.c
@@ -96,7 +96,7 @@ void gvir_config_domain_interface_set_model(GVirConfigDomainInterface *interface
                                                     "model", "type", model);
 }
 
-char *gvir_config_domain_interface_get_ifname(GVirConfigDomainInterface *interface)
+const char *gvir_config_domain_interface_get_ifname(GVirConfigDomainInterface *interface)
 {
     g_return_val_if_fail(GVIR_CONFIG_IS_DOMAIN_INTERFACE(interface), NULL);
 
@@ -115,7 +115,7 @@ GVirConfigDomainInterfaceLinkState gvir_config_domain_interface_get_link_state(G
                                                   GVIR_CONFIG_DOMAIN_INTERFACE_LINK_STATE_DEFAULT);
 }
 
-char *gvir_config_domain_interface_get_mac(GVirConfigDomainInterface *interface)
+const char *gvir_config_domain_interface_get_mac(GVirConfigDomainInterface *interface)
 {
     g_return_val_if_fail(GVIR_CONFIG_IS_DOMAIN_INTERFACE(interface), NULL);
 
@@ -123,7 +123,7 @@ char *gvir_config_domain_interface_get_mac(GVirConfigDomainInterface *interface)
                                             "mac", "address");
 }
 
-char *gvir_config_domain_interface_get_model(GVirConfigDomainInterface *interface)
+const char *gvir_config_domain_interface_get_model(GVirConfigDomainInterface *interface)
 {
     g_return_val_if_fail(GVIR_CONFIG_IS_DOMAIN_INTERFACE(interface), NULL);
 
@@ -135,7 +135,7 @@ G_GNUC_INTERNAL GVirConfigDomainDevice *
 gvir_config_domain_interface_new_from_tree(GVirConfigXmlDoc *doc,
                                            xmlNodePtr tree)
 {
-    xmlChar *type;
+    const xmlChar *type;
     GType gtype;
 
     type = gvir_config_xml_get_attribute_content(tree, "type");
@@ -160,7 +160,6 @@ gvir_config_domain_interface_new_from_tree(GVirConfigXmlDoc *doc,
         g_debug("Unknown domain interface node: %s", type);
         return NULL;
     }
-    xmlFree(type);
 
     return GVIR_CONFIG_DOMAIN_DEVICE(gvir_config_object_new_from_tree(gtype, doc, NULL, tree));
 
diff --git a/libvirt-gconfig/libvirt-gconfig-domain-interface.h b/libvirt-gconfig/libvirt-gconfig-domain-interface.h
index 567f95a..c8c4fb3 100644
--- a/libvirt-gconfig/libvirt-gconfig-domain-interface.h
+++ b/libvirt-gconfig/libvirt-gconfig-domain-interface.h
@@ -72,10 +72,10 @@ void gvir_config_domain_interface_set_mac(GVirConfigDomainInterface *interface,
                                           const char *mac_address);
 void gvir_config_domain_interface_set_model(GVirConfigDomainInterface *interface,
                                             const char *model);
-char *gvir_config_domain_interface_get_ifname(GVirConfigDomainInterface *interface);
+const char *gvir_config_domain_interface_get_ifname(GVirConfigDomainInterface *interface);
 GVirConfigDomainInterfaceLinkState gvir_config_domain_interface_get_link_state(GVirConfigDomainInterface *interface);
-char *gvir_config_domain_interface_get_mac(GVirConfigDomainInterface *interface);
-char *gvir_config_domain_interface_get_model(GVirConfigDomainInterface *interface);
+const char *gvir_config_domain_interface_get_mac(GVirConfigDomainInterface *interface);
+const char *gvir_config_domain_interface_get_model(GVirConfigDomainInterface *interface);
 
 G_END_DECLS
 
diff --git a/libvirt-gconfig/libvirt-gconfig-domain.c b/libvirt-gconfig/libvirt-gconfig-domain.c
index 177c926..33a69e3 100644
--- a/libvirt-gconfig/libvirt-gconfig-domain.c
+++ b/libvirt-gconfig/libvirt-gconfig-domain.c
@@ -54,10 +54,10 @@ static void gvir_config_domain_get_property(GObject *object,
 
     switch (prop_id) {
     case PROP_NAME:
-        g_value_take_string(value, gvir_config_domain_get_name(domain));
+        g_value_set_string(value, gvir_config_domain_get_name(domain));
         break;
     case PROP_DESCRIPTION:
-        g_value_take_string(value, gvir_config_domain_get_description(domain));
+        g_value_set_string(value, gvir_config_domain_get_description(domain));
         break;
     case PROP_MEMORY:
         g_value_set_uint64(value, gvir_config_domain_get_memory(domain));
@@ -198,7 +198,7 @@ void gvir_config_domain_set_virt_type(GVirConfigDomain *domain, GVirConfigDomain
 }
 
 
-char *gvir_config_domain_get_name(GVirConfigDomain *domain)
+const char *gvir_config_domain_get_name(GVirConfigDomain *domain)
 {
     return gvir_config_object_get_node_content(GVIR_CONFIG_OBJECT(domain),
                                                "name");
@@ -211,7 +211,7 @@ void gvir_config_domain_set_name(GVirConfigDomain *domain, const char *name)
     g_object_notify(G_OBJECT(domain), "name");
 }
 
-char *gvir_config_domain_get_description(GVirConfigDomain *domain)
+const char *gvir_config_domain_get_description(GVirConfigDomain *domain)
 {
     return gvir_config_object_get_node_content(GVIR_CONFIG_OBJECT(domain),
                                                "description");
diff --git a/libvirt-gconfig/libvirt-gconfig-domain.h b/libvirt-gconfig/libvirt-gconfig-domain.h
index 769d2f0..1dbfd95 100644
--- a/libvirt-gconfig/libvirt-gconfig-domain.h
+++ b/libvirt-gconfig/libvirt-gconfig-domain.h
@@ -100,9 +100,9 @@ GVirConfigDomain *gvir_config_domain_new_from_xml(const gchar *xml, GError **err
 GVirConfigDomain *gvir_config_domain_new(void);
 
 void gvir_config_domain_set_virt_type(GVirConfigDomain *domain, GVirConfigDomainVirtType type);
-char *gvir_config_domain_get_name(GVirConfigDomain *domain);
+const char *gvir_config_domain_get_name(GVirConfigDomain *domain);
 void gvir_config_domain_set_name(GVirConfigDomain *domain, const char *name);
-char *gvir_config_domain_get_description(GVirConfigDomain *domain);
+const char *gvir_config_domain_get_description(GVirConfigDomain *domain);
 void gvir_config_domain_set_description(GVirConfigDomain *domain, const char *description);
 guint64 gvir_config_domain_get_memory(GVirConfigDomain *domain);
 void gvir_config_domain_set_memory(GVirConfigDomain *domain, guint64 memory);
diff --git a/libvirt-gconfig/libvirt-gconfig-helpers-private.h b/libvirt-gconfig/libvirt-gconfig-helpers-private.h
index 514aeb0..aa53874 100644
--- a/libvirt-gconfig/libvirt-gconfig-helpers-private.h
+++ b/libvirt-gconfig/libvirt-gconfig-helpers-private.h
@@ -50,15 +50,15 @@ void gvir_config_xml_foreach_child(xmlNodePtr node,
                                    GVirConfigXmlNodeIterator iter_func,
                                    gpointer opaque);
 xmlNode * gvir_config_xml_get_element (xmlNode *node, ...);
-xmlChar * gvir_config_xml_get_child_element_content (xmlNode    *node,
-                                                     const char *child_name);
-char *gvir_config_xml_get_child_element_content_glib (xmlNode    *node,
-                                                      const char *child_name);
-xmlChar *gvir_config_xml_get_attribute_content(xmlNodePtr node,
-                                               const char *attr_name);
+const xmlChar * gvir_config_xml_get_child_element_content (xmlNode *node,
+                                                           const char *child_name);
+const char *gvir_config_xml_get_child_element_content_glib (xmlNode *node,
+                                                            const char *child_name);
+const xmlChar *gvir_config_xml_get_attribute_content(xmlNodePtr node,
+                                                     const char *attr_name);
 char *gvir_config_xml_node_to_string(xmlNodePtr node);
-char *gvir_config_xml_get_attribute_content_glib(xmlNodePtr node,
-                                                 const char *attr_name);
+const char *gvir_config_xml_get_attribute_content_glib(xmlNodePtr node,
+                                                       const char *attr_name);
 const char *gvir_config_genum_get_nick (GType enum_type, gint value);
 int gvir_config_genum_get_value (GType enum_type, const char *nick, gint default_value);
 G_END_DECLS
diff --git a/libvirt-gconfig/libvirt-gconfig-helpers.c b/libvirt-gconfig/libvirt-gconfig-helpers.c
index 5f4ebe9..49c7f90 100644
--- a/libvirt-gconfig/libvirt-gconfig-helpers.c
+++ b/libvirt-gconfig/libvirt-gconfig-helpers.c
@@ -220,56 +220,54 @@ gvir_config_xml_get_element (xmlNode *node, ...)
         return node;
 }
 
-xmlChar *
-gvir_config_xml_get_child_element_content (xmlNode    *node,
+const xmlChar *
+gvir_config_xml_get_child_element_content (xmlNode *node,
                                            const char *child_name)
 {
-        xmlNode *child_node;
+    xmlNode *child_node;
 
-        child_node = gvir_config_xml_get_element (node, child_name, NULL);
-        if (!child_node)
-                return NULL;
-
-        return xmlNodeGetContent (child_node);
-}
-
-static char *libxml_str_to_glib(xmlChar *str)
-{
-    char *g_str;
-
-    if (str == NULL)
+    child_node = gvir_config_xml_get_element(node, child_name, NULL);
+    if (!child_node || !(child_node->children))
         return NULL;
-    g_str = g_strdup((char *)str);
-    xmlFree(str);
 
-    return g_str;
+    return child_node->children->content;
 }
 
-char *
-gvir_config_xml_get_child_element_content_glib (xmlNode    *node,
+const char *
+gvir_config_xml_get_child_element_content_glib (xmlNode *node,
                                                 const char *child_name)
 {
-        xmlChar *content;
+    const xmlChar *content;
 
-        content = gvir_config_xml_get_child_element_content (node, child_name);
+    content = gvir_config_xml_get_child_element_content(node, child_name);
 
-        return libxml_str_to_glib(content);
+    return (const char *)content;
 }
 
-G_GNUC_INTERNAL xmlChar *
+G_GNUC_INTERNAL const xmlChar *
 gvir_config_xml_get_attribute_content(xmlNodePtr node, const char *attr_name)
 {
-    return xmlGetProp(node, (const xmlChar*)attr_name);
+    xmlAttr *attr;
+
+    for (attr = node->properties; attr; attr = attr->next) {
+        if (attr->name == NULL)
+            continue;
+
+        if (strcmp (attr_name, (char *)attr->name) == 0)
+            break;
+    }
+
+    return attr->children->content;
 }
 
-G_GNUC_INTERNAL char *
+G_GNUC_INTERNAL const char *
 gvir_config_xml_get_attribute_content_glib(xmlNodePtr node, const char *attr_name)
 {
-    xmlChar *attr;
+    const xmlChar *attr;
 
     attr = gvir_config_xml_get_attribute_content(node, attr_name);
 
-    return libxml_str_to_glib(attr);
+    return (const char *) attr;
 }
 
 const char *gvir_config_genum_get_nick (GType enum_type, gint value)
diff --git a/libvirt-gconfig/libvirt-gconfig-object-private.h b/libvirt-gconfig/libvirt-gconfig-object-private.h
index 41cbfe8..a6b7395 100644
--- a/libvirt-gconfig/libvirt-gconfig-object-private.h
+++ b/libvirt-gconfig/libvirt-gconfig-object-private.h
@@ -31,17 +31,17 @@ GVirConfigObject *gvir_config_object_new_from_tree(GType type,
                                                    const char *schema,
                                                    xmlNodePtr tree);
 xmlNodePtr gvir_config_object_get_xml_node(GVirConfigObject *config);
-char *gvir_config_object_get_node_content(GVirConfigObject *object,
-                                          const char *node_name);
+const char *gvir_config_object_get_node_content(GVirConfigObject *object,
+                                                const char *node_name);
 guint64 gvir_config_object_get_node_content_uint64(GVirConfigObject *object,
                                                    const char *node_name);
 gint gvir_config_object_get_node_content_genum(GVirConfigObject *object,
                                                const char *node_name,
                                                GType enum_type,
                                                gint default_value);
-char *gvir_config_object_get_attribute(GVirConfigObject *object,
-                                       const char *node_name,
-                                       const char *attr_name);
+const char *gvir_config_object_get_attribute(GVirConfigObject *object,
+                                             const char *node_name,
+                                             const char *attr_name);
 gint gvir_config_object_get_attribute_genum(GVirConfigObject *object,
                                             const char *node_name,
                                             const char *attr_name,
diff --git a/libvirt-gconfig/libvirt-gconfig-object.c b/libvirt-gconfig/libvirt-gconfig-object.c
index b637960..d99a0a2 100644
--- a/libvirt-gconfig/libvirt-gconfig-object.c
+++ b/libvirt-gconfig/libvirt-gconfig-object.c
@@ -274,7 +274,7 @@ gvir_config_object_get_xml_node(GVirConfigObject *config)
     return config->priv->node;
 }
 
-G_GNUC_INTERNAL char *
+G_GNUC_INTERNAL const char *
 gvir_config_object_get_node_content(GVirConfigObject *object,
                                     const char *node_name)
 {
@@ -287,7 +287,7 @@ gvir_config_object_get_node_content(GVirConfigObject *object,
     return gvir_config_xml_get_child_element_content_glib(node, node_name);
 }
 
-G_GNUC_INTERNAL char *
+G_GNUC_INTERNAL const char *
 gvir_config_object_get_attribute(GVirConfigObject *object,
                                  const char *node_name,
                                  const char *attr_name)
@@ -559,7 +559,7 @@ gvir_config_object_get_node_content_uint64(GVirConfigObject *object,
                                            const char *node_name)
 {
     xmlNodePtr node;
-    xmlChar *str;
+    const xmlChar *str;
     guint64 value;
 
     node = gvir_config_object_get_xml_node(GVIR_CONFIG_OBJECT(object));
@@ -571,7 +571,6 @@ gvir_config_object_get_node_content_uint64(GVirConfigObject *object,
         return 0;
 
     value = g_ascii_strtoull((char *)str, NULL, 0);
-    xmlFree(str);
 
     return value;
 }
@@ -583,7 +582,7 @@ gvir_config_object_get_node_content_genum(GVirConfigObject *object,
                                           gint default_value)
 {
     xmlNodePtr node;
-    xmlChar *str;
+    const xmlChar *str;
     gint value;
 
     node = gvir_config_object_get_xml_node(GVIR_CONFIG_OBJECT(object));
@@ -595,7 +594,6 @@ gvir_config_object_get_node_content_genum(GVirConfigObject *object,
         return default_value;
 
     value = gvir_config_genum_get_value(enum_type, (char *)str, default_value);
-    xmlFree(str);
 
     return value;
 }
@@ -608,7 +606,7 @@ gvir_config_object_get_attribute_genum(GVirConfigObject *object,
                                        gint default_value)
 {
     xmlNodePtr node;
-    xmlChar *attr_val;
+    const xmlChar *attr_val;
     gint value;
 
     g_return_val_if_fail(attr_name != NULL, default_value);
@@ -629,7 +627,6 @@ gvir_config_object_get_attribute_genum(GVirConfigObject *object,
 
     value = gvir_config_genum_get_value(enum_type, (char *)attr_val,
                                         default_value);
-    xmlFree(attr_val);
 
     return value;
 }
diff --git a/libvirt-gconfig/tests/test-domain-create.c b/libvirt-gconfig/tests/test-domain-create.c
index a92413d..8c9a6ba 100644
--- a/libvirt-gconfig/tests/test-domain-create.c
+++ b/libvirt-gconfig/tests/test-domain-create.c
@@ -32,10 +32,14 @@
 
 const char *features[] = { "foo", "bar", "baz", NULL };
 
+#define g_str_const_check(str1, str2) G_STMT_START { \
+    g_assert((str1) != NULL); \
+    g_assert(g_strcmp0((str1), (str2)) == 0); \
+} G_STMT_END
+
 #define g_str_check(str1, str2) G_STMT_START { \
     char *alloced_str = (str1); \
-    g_assert(alloced_str != NULL); \
-    g_assert(g_strcmp0(alloced_str, (str2)) == 0); \
+    g_str_const_check(alloced_str, (str2)); \
     g_free(alloced_str); \
 } G_STMT_END
 
@@ -51,7 +55,7 @@ int main(int argc, char **argv)
     domain = gvir_config_domain_new();
     g_assert(domain != NULL);
     gvir_config_domain_set_name(domain, "foo");
-    g_str_check(gvir_config_domain_get_name(domain), "foo");
+    g_str_const_check(gvir_config_domain_get_name(domain), "foo");
 
     gvir_config_domain_set_memory(domain, 1234);
     g_assert(gvir_config_domain_get_memory(domain) == 1234);
@@ -113,12 +117,12 @@ int main(int argc, char **argv)
 
     g_assert(gvir_config_domain_disk_get_disk_type(disk) == GVIR_CONFIG_DOMAIN_DISK_FILE);
     g_assert(gvir_config_domain_disk_get_guest_device_type(disk) == GVIR_CONFIG_DOMAIN_DISK_GUEST_DEVICE_DISK);
-    g_str_check(gvir_config_domain_disk_get_source(disk), "/tmp/foo/bar");
+    g_str_const_check(gvir_config_domain_disk_get_source(disk), "/tmp/foo/bar");
     g_assert(gvir_config_domain_disk_get_driver_cache(disk) == GVIR_CONFIG_DOMAIN_DISK_CACHE_NONE);
-    g_str_check(gvir_config_domain_disk_get_driver_name(disk), "qemu");
-    g_str_check(gvir_config_domain_disk_get_driver_type(disk), "qcow2");
+    g_str_const_check(gvir_config_domain_disk_get_driver_name(disk), "qemu");
+    g_str_const_check(gvir_config_domain_disk_get_driver_type(disk), "qcow2");
     g_assert(gvir_config_domain_disk_get_target_bus(disk) == GVIR_CONFIG_DOMAIN_DISK_BUS_IDE);
-    g_str_check(gvir_config_domain_disk_get_target_dev(disk), "hda");
+    g_str_const_check(gvir_config_domain_disk_get_target_dev(disk), "hda");
 
 
     /* network interfaces node */
diff --git a/libvirt-gconfig/tests/test-domain-parse.c b/libvirt-gconfig/tests/test-domain-parse.c
index c264ff9..11880de 100644
--- a/libvirt-gconfig/tests/test-domain-parse.c
+++ b/libvirt-gconfig/tests/test-domain-parse.c
@@ -34,7 +34,7 @@
 int main(int argc, char **argv)
 {
     GVirConfigDomain *domain;
-    char *name;
+    const char *name;
     GStrv features;
     char *xml;
     GError *error = NULL;
@@ -69,7 +69,6 @@ int main(int argc, char **argv)
     name = gvir_config_domain_get_name(domain);
     g_assert(name != NULL);
     g_assert(strcmp(name, "foo") == 0);
-    g_free(name);
 
     g_assert(gvir_config_domain_get_memory(domain) == 987654321);
 
diff --git a/libvirt-gobject/libvirt-gobject-domain-disk.c b/libvirt-gobject/libvirt-gobject-domain-disk.c
index d8fb63d..fb85328 100644
--- a/libvirt-gobject/libvirt-gobject-domain-disk.c
+++ b/libvirt-gobject/libvirt-gobject-domain-disk.c
@@ -90,10 +90,10 @@ gvir_domain_disk_stats_free(GVirDomainDiskStats *stats)
 G_DEFINE_BOXED_TYPE(GVirDomainDiskStats, gvir_domain_disk_stats,
                     gvir_domain_disk_stats_copy, gvir_domain_disk_stats_free)
 
-static gchar *gvir_domain_disk_get_path(GVirDomainDisk *self)
+static const gchar *gvir_domain_disk_get_path(GVirDomainDisk *self)
 {
     GVirConfigDomainDevice *config;
-    gchar *path;
+    const gchar *path;
 
     config = gvir_domain_device_get_config(GVIR_DOMAIN_DEVICE(self));
     path = gvir_config_domain_disk_get_target_dev(GVIR_CONFIG_DOMAIN_DISK(config));
@@ -119,7 +119,7 @@ GVirDomainDiskStats *gvir_domain_disk_get_stats(GVirDomainDisk *self, GError **e
     GVirDomainDiskStats *ret = NULL;
     virDomainBlockStatsStruct stats;
     virDomainPtr handle;
-    gchar *path;
+    const gchar *path;
 
     g_return_val_if_fail(GVIR_IS_DOMAIN_DISK(self), NULL);
 
@@ -142,7 +142,6 @@ GVirDomainDiskStats *gvir_domain_disk_get_stats(GVirDomainDisk *self, GError **e
 
 end:
     virDomainFree(handle);
-    g_free(path);
     return ret;
 }
 
@@ -164,7 +163,7 @@ gboolean gvir_domain_disk_resize(GVirDomainDisk *self,
 {
     gboolean ret = FALSE;
     virDomainPtr handle;
-    gchar *path;
+    const gchar *path;
 
     g_return_val_if_fail(GVIR_IS_DOMAIN_DISK(self), FALSE);
     g_return_val_if_fail(err == NULL || *err == NULL, FALSE);
@@ -183,6 +182,5 @@ gboolean gvir_domain_disk_resize(GVirDomainDisk *self,
 
 end:
     virDomainFree(handle);
-    g_free(path);
     return ret;
 }
diff --git a/libvirt-gobject/libvirt-gobject-domain-interface.c b/libvirt-gobject/libvirt-gobject-domain-interface.c
index 4436466..9f4b30d 100644
--- a/libvirt-gobject/libvirt-gobject-domain-interface.c
+++ b/libvirt-gobject/libvirt-gobject-domain-interface.c
@@ -88,10 +88,10 @@ gvir_domain_interface_stats_free(GVirDomainInterfaceStats *stats)
 G_DEFINE_BOXED_TYPE(GVirDomainInterfaceStats, gvir_domain_interface_stats,
                     gvir_domain_interface_stats_copy, gvir_domain_interface_stats_free)
 
-static gchar *gvir_domain_interface_get_path(GVirDomainInterface *self)
+static const gchar *gvir_domain_interface_get_path(GVirDomainInterface *self)
 {
     GVirConfigDomainDevice *config;
-    gchar *path = NULL;
+    const gchar *path = NULL;
 
     config = gvir_domain_device_get_config(GVIR_DOMAIN_DEVICE(self));
     if (GVIR_CONFIG_IS_DOMAIN_INTERFACE_USER(self))
@@ -121,7 +121,7 @@ GVirDomainInterfaceStats *gvir_domain_interface_get_stats(GVirDomainInterface *s
     GVirDomainInterfaceStats *ret = NULL;
     virDomainInterfaceStatsStruct stats;
     virDomainPtr handle;
-    gchar *path;
+    const gchar *path;
 
     g_return_val_if_fail(GVIR_IS_DOMAIN_INTERFACE(self), NULL);
 
@@ -151,6 +151,5 @@ GVirDomainInterfaceStats *gvir_domain_interface_get_stats(GVirDomainInterface *s
 
 end:
     virDomainFree(handle);
-    g_free(path);
     return ret;
 }
-- 
1.7.7.6




More information about the libvir-list mailing list