Branko Čibej wrote on Tue, Aug 11, 2015 at 21:55:48 +0200:
> On 11.08.2015 17:02, Philip Martin wrote:
> > Stefan Fuhrmann <stefan.fuhrm...@wandisco.com> writes:
> >
> >> way we use sizeof. In my opinion, we should take the
> >> size of the created or processed variable instead of its
> >> type, i.e.
> >>
> >>   abc_t *v = apr_pcalloc(pool, sizeof(*v));
> >>   apr_hash_set(hash, key, sizeof(*key), y);
> >>   z = apr_hash_get(hash, key, sizeof(*key));
> >>
> >> rather than
> >>
> >>   abc_t *v = apr_pcalloc(pool, sizeof(abc_t));
> >>   apr_hash_set(hash, key, sizeof(key_t), y);
> >>   z = apr_hash_get(hash, key, sizeof(key_t));

Both of these variants are redundant.  We could encapsulate the
redundancy in a macro:

    #define SVN__CALLOC(obj, pool) do { (obj) = apr_pcalloc((pool), 
sizeof(*(obj))); } while (0)
    {
      abc_t *v;
      SVN__CALLOC(v, pool);
    }

> > We have had problems with both styles in the past, so neither is immune
> > to bugs.  I prefer the explicit type as it is easier to grep.
> 
> The explicit type form is more accident-prone than the variable form
> because any change requires two modifications in the same statement
> instead of one.

Why doesn't the compiler or buildbot catch accidents?

Reply via email to