Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 24 Sep 2000 09:00:31 -0700 (PDT)
From:      Matt Dillon <dillon@earth.backplane.com>
To:        Warner Losh <imp@village.org>
Cc:        BSD <bsd@shell-server.com>, Michael Allman <msa@dinosauricon.com>, stable@FreeBSD.ORG
Subject:   Re: Constant panics on 4.1-STABLE! 
Message-ID:  <200009241600.e8OG0VF76919@earth.backplane.com>
References:  <Pine.BSF.4.10.10009232316590.62035-100000@marvin.shell-server.com>   <200009241546.e8OFkHG01180@billy-club.village.org>

next in thread | previous in thread | raw e-mail | index | archive | help
:: > 132		/*
:: > 133		 * Look up the address in the table for that Address Family
:: > 134		 */
:: > 135		if (rnh && (rn = rnh->rnh_matchaddr((caddr_t)dst, rnh)) &&
:: > 136		    ((rn->rn_flags & RNF_ROOT) == 0)) {
:: 
:: 	C doesn't guarantee order of execution in if ( bleh && bleh &&
:: bleh).  It may very well evaluate it backwards, or from the inside out if
:: it wants.  No?
:
:No.  That's not right.  It evaluates left to right.  rnh is checked
:for null, then matchaddr is called and then rn->rn_flags is checked.
:
:Warner

    Yah.  C definitely guarentees the order of execution for && and ||.  The
    moment a clause fails for an &&, the rest of the expression is skipped.
    The moment a clause succeeds for an ||, the rest of the expression is skipped.

						-Matt


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-stable" in the body of the message




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