Branko Čibej wrote:

> On 19.11.2013 18:19, Julian Foad wrote:
>> [...] I was referring to the change of SVN_NO_ERROR from '0' to '(void *)0'.
> I hope you mean (svn_error_t*)0, not (void*)0?


Oops, yes I did mean that.

>> But now I see that the real issue with svn_cl__try is its variable arguments
>> are not pointers at all, but error codes of (integer) type 'apr_status_t'. So
>> the sentinel should be 0 or APR_SUCCESS.
> 
> Looks good; but I'd prefer that we consistently use APR_SUCCESS in
> this case instead of 0. Sure it's the same thing, but using the
> named code gives an extra hint that you're dealing with APR error
> codes.


I'm a big fan of named constants in many cases but I compared the reading of 
the code in this case and '0' won out by being much more visually obvious as a 
terminator and not being in a different name-space (APR_SUCCESS to end a list 
of SVN_... codes looked odd and cluttered). And as it's a private API.


>> I've changed the sentinels there to 0 and updated the doc string, in 1543507.
>> Earlier, in r1543477, I updated all remaining variadic function calls that
>> want a pointer-null sentinel, to use SVN_VA_NULL instead of plain NULL.
> 

> Hmmm ... I thought I'd covered all of them? Maybe new ones crept in
> since then?

I r1536307 you did a lot, but only ones where the NULL had already been 
explicitly type-cast, which apparently wasn't close to all of them. Also I 
found another function to annotate since then 
(svn_ra_serf__add_open_tag_buckets), and probably some new instances crept in 
as well.

It was some trouble for me to force the definition of NULL as plain 0 on my 
system, as at least one of the system header files forcibly redefines it to 
(void *)NULL even if I set it to plain NULL before including the headers. There 
was no single place I could set it. I still might have missed some.


- Julian

Reply via email to