On Tue, Mar 3, 2015 at 7:10 PM, Julian Foad <julianfoad_at_btopenworld.com>
wrote:
> Stefan Fuhrmann wrote:
> > Julian Foad wrote:
> >> #define svn_hash_sets(ht, key, val) \
> >> do { \
> >> const char *svn_hash__key = (key); \
> >> apr_hash_set(ht, svn_hash__key, APR_HASH_KEY_STRING, val); \
> >> } while (0)
> >
> > But it would have caught the problem introduced in r1658194.
> >
> > So, that would be a 50% solution with no obvious drawbacks.
> [...]
> >
> > I can't think of a way to sneak in a type check into the getter
> > without evaluating the key twice.
> >
> > In maintainer mode, though, we could replace the macro(s)
> > with a "proper" function. That would not produce overhead
> > for production code nor would it interfere with API guarantees.
>
> Yes.
>
> I'll change the 'set' macro as above, and I'll introduce a private 'get'
> function and make the (public) 'get' macro call the function in debug mode
> only. (That's a poor man's version of declaring a function as 'inline'.)
>
> Committed: http://svn.apache.org/r1663760
>
> Thank you!
-- Stefan^2.
Received on 2015-03-03 21:08:25 CET