On 09/28/22 23:53, Eric Blake wrote: > On Wed, Sep 28, 2022 at 06:25:35PM +0100, Richard W.M. Jones wrote: >> For API parameters that are pointers and must not be NULL, add the >> appropriate GCC annotations. >> >> Reviewed-by: Laszlo Ersek <ler...@redhat.com> >> --- >> generator/C.ml | 59 +++++++++++++++++++++++++++++++++++-- >> tests/errors-connect-null.c | 4 +++ >> 2 files changed, 61 insertions(+), 2 deletions(-) > >> @@ -216,7 +238,21 @@ let >> let print_fndecl ?wrap ?closure_style name args optargs ret = >> pr "extern "; >> print_call ?wrap ?closure_style name args optargs ret; >> - pr ";\n" >> + >> + (* Output __attribute__((nonnull)) for the function parameters: >> + * eg. struct nbd_handle *, int, char * >> + * => [ true, false, true ] >> + * => LIBNBD_ATTRIBUTE_NONNULL((1,3)) >> + * => __attribute__((nonnull,(1,3))) > > Comment typo: No ',' before the innermost '('. > >> + *) >> + let nns : bool list = >> + [ true ] (* struct nbd_handle * *) >> + @ List.flatten (List.map arg_attr_nonnull args) >> + @ List.flatten (List.map optarg_attr_nonnull optargs) in >> + let nns = List.mapi (fun i b -> (i+1, b)) nns in >> + let nns = filter_map (fun (i, b) -> if b then Some i else None) nns in >> + let nns : string list = List.map string_of_int nns in >> + pr "\n LIBNBD_ATTRIBUTE_NONNULL((%s));\n" (String.concat "," nns) >> >> let rec print_cbarg_list ?(wrap = false) ?maxcol ?types ?(parens = true) >> cbargs = > > The typo's easy to fix, > Reviewed-by: Eric Blake <ebl...@redhat.com> >
I'm a big fan of this version of the patch. :) Thanks! Laszlo _______________________________________________ Libguestfs mailing list Libguestfs@redhat.com https://listman.redhat.com/mailman/listinfo/libguestfs