[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

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



On Wed, Mar 07, 2012 at 06:02:06AM +0200, Zeeshan Ali (Khattak) wrote:
> From: "Zeeshan Ali (Khattak)" <zeeshanak 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.

Most of the patch looks good, see the 3 additional patches I'll send in
answer to this email. The first 2 ones should be merged in this one, the
3rd one can go as an additional cleanup or can be squashed in, as you
prefer. ACK from me with these 3 additional patches, assuming they look
good to you and you are fine with them, otherwise let me know so that we
can figure a way of getting everything in.

Christophe

> ---
>  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
> 
> --
> libvir-list mailing list
> libvir-list redhat com
> https://www.redhat.com/mailman/listinfo/libvir-list

Attachment: pgprqML8FzxqT.pgp
Description: PGP signature


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]