Steven Kirk wrote:
> 
>>> 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.
>>
>>
>> Can't do that because it changes the signature of the function 
>> consumers of the API get when they write svn_error_clear, suddenly all 
>> their code breaks because they're not passing a pointer to a pointer 
>> to an error object.  It would preserve binary compatability, but not 
>> source compatability, we need both.
> 
> 
> Sorry, I don't understand... Binaries would remain linked to 
> svn_error_clear, whilst the svn_error_clear() macro would automatically 
> redirect newly compiled code to the new svn_error_clear2() function. 
> AFAICS, you retain binary and source compatibility. But then I always 
> have had trouble understanding compatability rules!
Actually, I think I was mistaken.  I wasn't fully awake when reading 
that email...  It will work in the majority of cases, although I'm not 
sure if it's valid to take the address of a temporary (i.e. 
svn_error_clear(svn_function_that_returns_error()) might be problematic).
-garrett
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Thu Dec 16 16:27:14 2004