• Tom Lane's avatar
    Avoid passing NULL to memcmp() in lookups of zero-argument functions. · 0a52d378
    Tom Lane authored
    A few places assumed they could pass NULL for the argtypes array when
    looking up functions known to have zero arguments.  At first glance
    it seems that this should be safe enough, since memcmp() is surely not
    allowed to fetch any bytes if its count argument is zero.  However,
    close reading of the C standard says that such calls have undefined
    behavior, so we'd probably best avoid it.
    
    Since the number of places doing this is quite small, and some other
    places looking up zero-argument functions were already passing dummy
    arrays, let's standardize on the latter solution rather than hacking
    the function lookup code to avoid calling memcmp() in these cases.
    I also added Asserts to catch any future violations of the new rule.
    
    Given the utter lack of any evidence that this actually causes any
    problems in the field, I don't feel a need to back-patch this change.
    
    Per report from Piotr Stefaniak, though this is not his patch.
    0a52d378
foreigncmds.c 42 KB