Blob Blame History Raw
diff -rup Sys-Virt-0.1.2.orig/Virt.xs Sys-Virt-0.1.2.new/Virt.xs
--- Sys-Virt-0.1.2.orig/Virt.xs	2008-02-23 14:15:14.000000000 -0500
+++ Sys-Virt-0.1.2.new/Virt.xs	2008-03-07 17:36:28.000000000 -0500
@@ -197,13 +197,14 @@ list_domain_ids(con, maxids)
   PPCODE:
       Newx(ids, maxids, int);
       if ((nid = virConnectListDomains(con, ids, maxids)) < 0) {
+        Safefree(ids);
 	_croak_error(virConnGetLastError(con));
       }
       EXTEND(SP, nid);
       for (i = 0 ; i < nid ; i++) {
 	PUSHs(sv_2mortal(newSViv(ids[i])));
       }
-      free(ids);
+      Safefree(ids);
 
 
 int
@@ -227,7 +228,7 @@ list_defined_domain_names(con, maxnames)
   PPCODE:
       Newx(names, maxnames, char *);
       if ((ndom = virConnectListDefinedDomains(con, names, maxnames)) < 0) {
-	free(names);
+	Safefree(names);
 	_croak_error(virConnGetLastError(con));
       }
       EXTEND(SP, ndom);
@@ -235,7 +236,7 @@ list_defined_domain_names(con, maxnames)
 	PUSHs(sv_2mortal(newSVpv(names[i], 0)));
         free(names[i]);
       }
-      free(names);
+      Safefree(names);
 
 
 int
@@ -258,6 +259,7 @@ list_network_names(con, maxnames)
   PPCODE:
       Newx(names, maxnames, char *);
       if ((nnet = virConnectListNetworks(con, names, maxnames)) < 0) {
+        Safefree(names);
 	_croak_error(virConnGetLastError(con));
       }
       EXTEND(SP, nnet);
@@ -265,7 +267,7 @@ list_network_names(con, maxnames)
 	PUSHs(sv_2mortal(newSVpv(names[i], 0)));
 	free(names[i]);
       }
-      free(names);
+      Safefree(names);
 
 
 int
@@ -289,7 +291,7 @@ list_defined_network_names(con, maxnames
   PPCODE:
       Newx(names, maxnames, char *);
       if ((ndom = virConnectListDefinedNetworks(con, names, maxnames)) < 0) {
-	free(names);
+	Safefree(names);
 	_croak_error(virConnGetLastError(con));
       }
       EXTEND(SP, ndom);
@@ -297,7 +299,7 @@ list_defined_network_names(con, maxnames
 	PUSHs(sv_2mortal(newSVpv(names[i], 0)));
         free(names[i]);
       }
-      free(names);
+      Safefree(names);
 
 
 void