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>