[PATCH] Selftest improvements

jim jim.brown at rsmas.miami.edu
Thu Feb 8 15:18:50 UTC 2018


> On 08/02/18 16:17, jim via samba-technical wrote:
> >/Why do you remove the explicit argument declarations for so many /functions?
> >/These declarations help catch usage errors, i.e. wrong number of calling />/arguments, especially when you add arguments to functions. /
> Hi Jim,
>
>
> My understanding is that because these are object methods, the
> prototypes actually were not providing the checking benefits [see
> PERLSUB(1) (section "Prototypes")] -- this is evidenced by the fact that
> some of the prototypes I removed actually had the wrong number of arguments!
>
> Now that the subroutines are being dynamically called by function
> references, the checking also appears not to apply [see the same source].
>
> There was also a more concrete reason: the setup code will automatically
> set up multiple environment dependencies and pass each of their vars as
> an individual parameter. Accomplishing this was [seemingly] impossible
> with the prototypes in place.
>
> Additionally, there seems to be a consensus among perl devs that
> prototypes are generally harmful: see this post (by my colleague) for
> example:http://www.perlmonks.org/?node_id=406231
>
>
> If this is okay, attached is a version of the patch with this commit
> separated out and the explanation in the message.
>
>
> Thanks,
> - Jamie
Jamie

You should add explicit run-time checks in each function to verify it 
was called with the expected number of arguments (since the compiler is 
unable to perform these prototype checks). This kind of problem needs to 
be found as early as possible.

Regards,
Jim


More information about the samba-technical mailing list