> 3. Make svn_error_clear() a macro like this:
>
> #define svn_error_clear(svn_error_clear__err) \
> do { \
> svn_error__clear_internal(svn_error_clear__err); \
> (svn_error_clear__err) = NULL; \
> } while (0)
>
> PROS: Solves the problem everywhere, forever. Small code change.
> CONS: Code like this in mod_dav_svn/repos.c is no longer possible:
>
> svn_error_clear(svn_fs_open_txn(&(res2->info->root.txn),
> res2->info->repos->fs,
> res2->info->root.txn_name,
> res2->info->repos->pool));
>
> Note that this code would get a compile error ("invalid
> lvalue in assignment"), so it's not like we could end up
> accidentally calling the function twice instead of once.
> However, we would have to rewrite a few places to use an
> external error variable, and fix the doc string of
> svn_error_clear() to not recommend this idiom.
>
>
Another option
#define svn_error_clear(err) svn_error_clear2(&(err))
And at the end of svn_error_clear_internal:
*err = NULL;
svn_error_clear() would remain in the svn libs as to not break binary compatibility.
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Thu Dec 16 14:20:36 2004