[Python-Dev] are NULL checks in Objects/abstract.c reallyneeded? (original) (raw)

Tim Peters tim.one@comcast.net
Thu, 13 Mar 2003 16:20:52 -0500


[Skip Montanaro]

It's not clear to me that you'd see any benefit anyway. The checking code currently looks like this:

if (o == NULL) return nullerror(); If you changed it to use assert you'd have assert(o != NULL); which expands to _((o != NULL) ? 0 : assert(...)); ...

In the release build, Python arranges to #define the preprocessor NDEBUG symbol, which in turn causes assert() to expand to nothing (or maybe to (void)0, or something like that, depending on the compiler). That's standard ANSI C behavior for assert(). IOW, asserts cost nothing in a release build -- and don't do anything in a release build either.