On Fri, Sep 11, 2009 at 10:56:57AM +0100, Matthew Booth wrote:
Parsed string lists are allocated by malloc, but were never freed.
+ (* XXX: There must be a cleaner way to write this *) + iteri ( + fun i -> + function + | StringList name | DeviceList name -> + pr " char **%s_i = %s;\n" name name;
In guestfish there is a function free_strings which does what you want, so just call: free_strings (%s); instead of the loop.
+ | _ -> ();
Using '_' to match anything is slightly dangerous. It means that if we added any more list-type cases to the type in the future [eg. PathList], then the OCaml compiler wouldn't give us a warning about not having implemented them in this code, which could lead to misgenerated code. The alternative is to just list all the other cases: | String _ | Bool _ | (*etc*) -> () Looks fine otherwise. Rich. -- Richard Jones, Emerging Technologies, Red Hat http://et.redhat.com/~rjones libguestfs lets you edit virtual machines. Supports shell scripting, bindings from many languages. http://et.redhat.com/~rjones/libguestfs/ See what it can do: http://et.redhat.com/~rjones/libguestfs/recipes.html