--- libvirt-designer/libvirt-designer-domain.c | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/libvirt-designer/libvirt-designer-domain.c b/libvirt-designer/libvirt-designer-domain.c index 49e8068..c3a5ce3 100644 --- a/libvirt-designer/libvirt-designer-domain.c +++ b/libvirt-designer/libvirt-designer-domain.c @@ -352,14 +352,19 @@ gvir_designer_domain_get_arch_native(GVirDesignerDomain *design) gvir_config_capabilities_host_get_cpu(host) : NULL; const gchar *arch = cpu ? gvir_config_capabilities_cpu_get_arch(cpu) : NULL; + gchar *arch_native; if (arch) { - return gvir_designer_domain_get_arch_normalized(arch); + arch_native = gvir_designer_domain_get_arch_normalized(arch); } else { struct utsname ut; uname(&ut); - return gvir_designer_domain_get_arch_normalized(ut.machine); + arch_native = gvir_designer_domain_get_arch_normalized(ut.machine); } + g_object_unref(G_OBJECT(cpu)); + g_object_unref(G_OBJECT(host)); + + return arch_native; } @@ -372,7 +377,7 @@ gvir_designer_domain_get_guest(GVirDesignerDomain *design, GList *tmp = guests; GVirConfigCapabilitiesGuest *ret = NULL; - while (tmp) { + while (tmp && !ret) { GVirConfigCapabilitiesGuest *guest = GVIR_CONFIG_CAPABILITIES_GUEST(tmp->data); GVirConfigCapabilitiesGuestArch *arch = @@ -388,13 +393,13 @@ gvir_designer_domain_get_guest(GVirDesignerDomain *design, guestos == GVIR_CONFIG_DOMAIN_OS_TYPE_XEN || guestos == GVIR_CONFIG_DOMAIN_OS_TYPE_UML)) { ret = g_object_ref(guest); - goto cleanup; } + g_object_unref(G_OBJECT(arch)); + tmp = tmp->next; } -cleanup: g_list_foreach(guests, (GFunc)g_object_unref, NULL); g_list_free(guests); return ret; @@ -561,7 +566,7 @@ gvir_designer_domain_setup_guest(GVirDesignerDomain *design, GVirConfigDomainOs *os = gvir_config_domain_os_new(); GVirConfigCapabilitiesGuestArch *arch = gvir_config_capabilities_guest_get_arch(guest); - GVirConfigCapabilitiesGuestDomain *domain; + GVirConfigCapabilitiesGuestDomain *domain = NULL; gboolean ret = FALSE; if (!(domain = gvir_designer_domain_best_guest_domain(arch, @@ -581,6 +586,9 @@ gvir_designer_domain_setup_guest(GVirDesignerDomain *design, ret = TRUE; cleanup: + if (domain != NULL) + g_object_unref(domain); + g_object_unref(arch); g_object_unref(os); return ret; } -- 1.8.1.4 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list