[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: svn commit: r23993 - trunk/subversion/bindings/java/javahl/native

From: Blair Zajac <blair_at_orcaware.com>
Date: 2007-07-23 17:25:49 CEST

Hyrum K. Wright wrote:
> Blair Zajac wrote:
>>
>> On Mar 21, 2007, at 6:42 PM, hwright@tigris.org wrote:
>>
>>> Author: hwright
>>> Date: Wed Mar 21 18:42:31 2007
>>> New Revision: 23993
>>>
>>> Log:
>>> JavaHL: Introduce a macro to check for NULL pointers in the C++ layer
>>> and
>>> throw the appropriate Java exception.
>>>
>>> * subversion/bindings/java/javahl/native/SVNBase.
>>> (SVN_JNI_NULL_PTR_EX): New macro, styled after SVN_ERR(), which checks
>>> its arguments for NULL, and throws a NullPointerException if so.
>>>
>>> * subversion/bindings/java/javahl/native/SVNClient.cpp,
>>> subversion/bindings/java/javahl/native/SVNAdmin.cpp:
>>> Use the new macro to check for null pointers.
>>>
>>>
>>> Modified:
>>> trunk/subversion/bindings/java/javahl/native/SVNAdmin.cpp
>>> trunk/subversion/bindings/java/javahl/native/SVNBase.h
>>> trunk/subversion/bindings/java/javahl/native/SVNClient.cpp
>>>
>>
>>
>>
>>> +
>>> +/**
>>> + * A statement macro used for checking NULL pointers, in the style of
>>> + * SVN_ERR().
>>> + *
>>> + * Evaluate @a expr. If it equals NULL, throw an
>>> NullPointerException with
>>> + * the value @a str, and return the @a ret_val. Otherwise, continue.
>>> + *
>>> + * Note that if the enclosing function returns <tt>void</tt>, @a
>>> ret_val may
>>> + * be blank.
>>> + */
>>> +
>>> +#define SVN_JNI_NULL_PTR_EX(expr, str, ret_val) \
>>> + if (expr == NULL) { \
>>> + JNIUtil::throwNullPointerException(str); \
>>> + return ret_val ; \
>>> + }
>>> +
>>> //
>>> !defined(AFX_SVNBASE_H__ABF82C7E_0C50_40EA_8C88_2DFDF20B3A47__INCLUDED_)
>>> #endif
>>>
>>
>> Shouldn't we put this in the do { } while(0) loop, otherwise we
>> replace this
>>
>> SVN_JNI_NULL_PTR_EX(path, "path", );
>>
>> with
>>
>> if (path == NULL) {
>> JNIUtil::throwNullPointerException("path");
>> return ;
>> };
>>
>> with the trailing ; at the end of the } ?
>>
>> Don't some compilers complain about empty statements?
>
> We can use a do { } while(0) wrapper. Do we have any examples of
> compilers complaining here, or is this a theoretical problem?

I don't have any examples, but I recall people saying that their
compiler complains. I don't which compiler will complain.

Regards,
Blair

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Mon Jul 23 17:24:51 2007

This is an archived mail posted to the Subversion Dev mailing list.