Wireshark mailing list archives
Re: Yoda style conditions
From: Jeff Morriss <jeff.morriss.ws () gmail com>
Date: Thu, 24 Feb 2011 15:26:12 -0500
Steffen DETTMER wrote:
(OT, sorry for my noise on the list)
Well, it IS a development discussion, so I'm not sure it's completely OT.
Also, I think for NULL pointers this is much more easy than to check for possibly deleted pointers (or otherwise stale pointers or copies of pointers realloc'd after the copy etc). Unfortunately I have no clue how much a good static code analyzer can help here. Maybe it could spot some of such problems and assist developing, but if I had to guess I would guess determination of such conditions would be quite limited. Or is it considered good to add such if(p)-checks because they are cheap and could avoid a crash in at least some cases?
I usually think of it this way:- If I think the pointer can logically be NULL (e.g., it'll be NULL if if it's possible we didn't hit the condition that initializes it to something else), then I put an if(p) check.
- else, just dereference the thing and crash if it's NULL/bogus/already freed[1]/uninitialized[1] so that there is (on "proper" ;-)) systems a core file to analyze.
I'm not a believer in always checking for things that can't be the case because, frankly, *when* they do happen, I'd much rather have a core file than some really, really obscure (and probably not reproducible) behavior. (Of course this belief depends on living in an environment where I can get usable core files from crashes.)
[1] Memory scrubbers that overwrite the contents of memory as soon as it is freed and initialize it to non-zero when it is allocated help detect these kinds of problems during development/testing. Of course so do things like glibc's malloc'd memory checking functions.
___________________________________________________________________________ Sent via: Wireshark-dev mailing list <wireshark-dev () wireshark org> Archives: http://www.wireshark.org/lists/wireshark-dev Unsubscribe: https://wireshark.org/mailman/options/wireshark-dev mailto:wireshark-dev-request () wireshark org?subject=unsubscribe
Current thread:
- Re: [Wireshark-commits] rev 35975: /trunk/epan/dfilter/ /trunk/epan/dfilter/: dfilter-macro.c dfilter.c Stig Bjørlykke (Feb 17)
- Re: [Wireshark-commits] rev 35975: /trunk/epan/dfilter/ /trunk/epan/dfilter/: dfilter-macro.c dfilter.c Guy Harris (Feb 17)
- Re: [Wireshark-commits] rev 35975: /trunk/epan/dfilter/ /trunk/epan/dfilter/: dfilter-macro.c dfilter.c Guy Harris (Feb 17)
- Re: [Wireshark-commits] rev 35975: /trunk/epan/dfilter/ /trunk/epan/dfilter/: dfilter-macro.c dfilter.c Guy Harris (Feb 17)
- Re: [Wireshark-commits] rev 35975: /trunk/epan/dfilter/ /trunk/epan/dfilter/: dfilter-macro.c dfilter.c Gerald Combs (Feb 17)
- Re: [Wireshark-commits] rev 35975: /trunk/epan/dfilter/ /trunk/epan/dfilter/: dfilter-macro.c dfilter.c Guy Harris (Feb 17)
- Re: [Wireshark-commits] rev 35975: /trunk/epan/dfilter/ /trunk/epan/dfilter/: dfilter-macro.c dfilter.c Guy Harris (Feb 17)
- Re: [Wireshark-commits] rev 35975: /trunk/epan/dfilter/ /trunk/epan/dfilter/: dfilter-macro.c dfilter.c Jeff Morriss (Feb 17)
- Yoda style conditions (was: Re: [Wireshark-commits] rev 35975: /trunk/epan/dfilter/ /trunk/epan/dfilter/: dfilter-macro.c dfilter.c) Steffen DETTMER (Feb 23)
- Re: Yoda style conditions (was: Re: [Wireshark-commits] rev 35975: /trunk/epan/dfilter/ /trunk/epan/dfilter/: dfilter-macro.c dfilter.c) Guy Harris (Feb 23)
- Re: Yoda style conditions (was: Re: [Wireshark-commits] rev 35975: /trunk/epan/dfilter/ /trunk/epan/dfilter/: dfilter-macro.c dfilter.c) Steffen DETTMER (Feb 24)
- Re: Yoda style conditions Jeff Morriss (Feb 24)
- Re: [Wireshark-commits] rev 35975: /trunk/epan/dfilter/ /trunk/epan/dfilter/: dfilter-macro.c dfilter.c Guy Harris (Feb 17)