On Thu, May 31, 2012 at 4:36 AM, Julian Foad <julianf...@btopenworld.com> wrote: > > > > > ----- Original Message ----- >> From: Greg Stein <gst...@gmail.com> >> To: Vladimir Berezniker <v...@hitechman.com> >> Cc: dev@subversion.apache.org >> Sent: Thursday, 31 May 2012, 8:35 >> Subject: Re: [PATCH] JavaHL: Reduce amount of duplicate code used to check >> C++ pointer extracted from the java object >> >> On Thu, May 31, 2012 at 12:43 AM, Vladimir Berezniker >> <v...@hitechman.com> wrote: >>> Patch 01 - Introduce macro >>> >>> [[[ >>> JavaHL: Added CPPADDR_NULL_PTR macro to reduce amount of duplicate code >>> checking C++ pointer extracted from the java object >>> >>> [ in subversion/bindings/javahl/native ] >>> >>> * JNIUtil.h >>> (CPPADDR_NULL_PTR): New macro to test for NULL pointer and raise java >>> exception if necessary >>> ]]] >> >> Replying to just this patch. The second patch seems pretty mechanical. >> And we're only looking at minor nits. >> >> (sorry, but the patch doesn't inline into this response, so let's just >> be flexible here...) >> >> >> The macro argument substitutions need to be parenthesized for safety. >> So it would be: (expr) == NULL, and it would be: return (ret_val); > > I notice the second patch relies on being able to pass an empty > (whitespace-only) second argument in order to generate "return;" in the > macro, so putting parentheses there wouldn't work. Actually I didn't know it > was possible to pass an empty (or, rather, whitespace-only) argument to a > macro, but apparently it is. Is it standardized? If so, this seems fine to > me, to use the argument without adding parentheses around it.
We use this same trick for other macros, such as SVN_JNI_NULL_PTR_EX(). I don't know if it is standardized, but we've been using it for years. We do have to omit the parenthesis around the return value in the macro definition, as "return ();" is not valid syntax. -Hyrum -- uberSVN: Apache Subversion Made Easy http://www.uberSVN.com/