Correctly free memory in RHashtable binding for OCaml & Python.

This commit is contained in:
Richard Jones
2009-04-15 14:09:01 +01:00
parent ad5abc8d36
commit 0c2376a5c0
3 changed files with 6 additions and 2 deletions

View File

@@ -1919,6 +1919,7 @@ ocaml_guestfs_tune2fs_l (value gv, value devicev)
caml_failwith ("tune2fs_l: used handle after closing it");
const char *device = String_val (devicev);
int i;
char **r;
caml_enter_blocking_section ();
@@ -1928,6 +1929,7 @@ ocaml_guestfs_tune2fs_l (value gv, value devicev)
ocaml_guestfs_raise_error (g, "tune2fs_l");
rv = copy_table (r);
for (i = 0; r[i] != NULL; ++i) free (r[i]);
free (r);
CAMLreturn (rv);
}

View File

@@ -2072,7 +2072,7 @@ py_guestfs_tune2fs_l (PyObject *self, PyObject *args)
}
py_r = put_table (r);
free (r);
free_strings (r);
return py_r;
}

View File

@@ -3533,6 +3533,7 @@ copy_table (char * const * argv)
| RStatVFS _ ->
pr " struct guestfs_statvfs *r;\n"; "NULL"
| RHashtable _ ->
pr " int i;\n";
pr " char **r;\n";
"NULL" in
pr "\n";
@@ -3588,6 +3589,7 @@ copy_table (char * const * argv)
pr " free (r);\n";
| RHashtable _ ->
pr " rv = copy_table (r);\n";
pr " for (i = 0; r[i] != NULL; ++i) free (r[i]);\n";
pr " free (r);\n";
);
@@ -4447,7 +4449,7 @@ py_guestfs_close (PyObject *self, PyObject *args)
pr " free (r);\n"
| RHashtable n ->
pr " py_r = put_table (r);\n";
pr " free (r);\n"
pr " free_strings (r);\n"
);
pr " return py_r;\n";