[Libguestfs] [PATCH] generator.ml: Fix string list memory leak

Richard W.M. Jones rjones at redhat.com
Fri Sep 11 10:23:59 UTC 2009


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




More information about the Libguestfs mailing list