Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 17 Feb 2004 02:14:01 -0800 (PST)
From:      Dag-Erling Smorgrav <des@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 47094 for review
Message-ID:  <200402171014.i1HAE1ed080668@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=47094

Change 47094 by des@des.at.c4is.org on 2004/02/17 02:13:13

	Make the ENTER*() and RETURN*() macros safe from side-effects, and
	solve the "dereferencing NULL pointer" warning.

Affected files ...

.. //depot/projects/openpam/lib/openpam_impl.h#29 edit

Differences ...

==== //depot/projects/openpam/lib/openpam_impl.h#29 (text+ko) ====

@@ -31,7 +31,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $P4: //depot/projects/openpam/lib/openpam_impl.h#28 $
+ * $P4: //depot/projects/openpam/lib/openpam_impl.h#29 $
  */
 
 #ifndef _OPENPAM_IMPL_H_INCLUDED
@@ -137,45 +137,52 @@
 #ifdef DEBUG
 #define ENTER() openpam_log(PAM_LOG_DEBUG, "entering")
 #define ENTERI(i) do { \
-	if ((i) > 0 && (i) < PAM_NUM_ITEMS) \
-		openpam_log(PAM_LOG_DEBUG, "entering: %s", _pam_item_name[i]); \
+	int _i = (i); \
+	if (_i > 0 && _i < PAM_NUM_ITEMS) \
+		openpam_log(PAM_LOG_DEBUG, "entering: %s", _pam_item_name[_i]); \
 	else \
-		openpam_log(PAM_LOG_DEBUG, "entering: %d", (i)); \
+		openpam_log(PAM_LOG_DEBUG, "entering: %d", _i); \
 } while (0)
 #define ENTERN(n) do { \
-	openpam_log(PAM_LOG_DEBUG, "entering: %d", (n)); \
+	int _n = (n); \
+	openpam_log(PAM_LOG_DEBUG, "entering: %d", _n); \
 } while (0)
 #define ENTERS(s) do { \
-	if ((s) == NULL) \
+	const char *_s = (s); \
+	if (_s == NULL) \
 		openpam_log(PAM_LOG_DEBUG, "entering: NULL"); \
 	else \
-		openpam_log(PAM_LOG_DEBUG, "entering: '%s'", (s)); \
+		openpam_log(PAM_LOG_DEBUG, "entering: '%s'", _s); \
 } while (0)
 #define	RETURNV() openpam_log(PAM_LOG_DEBUG, "returning")
 #define RETURNC(c) do { \
-	if ((c) >= 0 && (c) < PAM_NUM_ERRORS) \
-		openpam_log(PAM_LOG_DEBUG, "returning %s", _pam_err_name[c]); \
+	int _c = (c); \
+	if (_c >= 0 && _c < PAM_NUM_ERRORS) \
+		openpam_log(PAM_LOG_DEBUG, "returning %s", _pam_err_name[_c]); \
 	else \
-		openpam_log(PAM_LOG_DEBUG, "returning %d!", (c)); \
-	return (c); \
+		openpam_log(PAM_LOG_DEBUG, "returning %d!", _c); \
+	return (_c); \
 } while (0)
 #define	RETURNN(n) do { \
-	openpam_log(PAM_LOG_DEBUG, "returning %d", (n)); \
-	return (n); \
+	int _n = (n); \
+	openpam_log(PAM_LOG_DEBUG, "returning %d", _n); \
+	return (_n); \
 } while (0)
 #define	RETURNP(p) do { \
-	if ((p) == NULL) \
+	const void *_p = (p); \
+	if (_p == NULL) \
 		openpam_log(PAM_LOG_DEBUG, "returning NULL"); \
 	else \
-		openpam_log(PAM_LOG_DEBUG, "returning %p", (p)); \
+		openpam_log(PAM_LOG_DEBUG, "returning %p", _p); \
 	return (p); \
 } while (0)
 #define	RETURNS(s) do { \
-	if ((s) == NULL) \
+	const char *_s = (s); \
+	if (_s == NULL) \
 		openpam_log(PAM_LOG_DEBUG, "returning NULL"); \
 	else \
-		openpam_log(PAM_LOG_DEBUG, "returning '%s'", (s)); \
-	return (s); \
+		openpam_log(PAM_LOG_DEBUG, "returning '%s'", _s); \
+	return (_s); \
 } while (0)
 #else
 #define ENTER()



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200402171014.i1HAE1ed080668>