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>