[Python-Dev] Py_DECREF causes spurious gcc warning

Martin v. Löwis martin at v.loewis.de
Thu Dec 18 16:27:30 EST 2003


Skip Montanaro <skip at pobox.com> writes:

> I meant the Py_*REF macros which expand to "if" statements and you'd bracify
> the clauses, e.g., Py_DECREF would become:

That would still trigger the warning about

  if(1) Py_DECREF(foo);

as this expands to

  if(1) if(cond(foo)) {action1(foo);} else {action2(foo);}

This, in turn, is potentially unintended, as the author of that code
may have meant the else to go with the if(1), whereas, in C, it goes
with the if(cond(foo)). As Tim explains, the intended semantics is the
desired one, too, so there is really no problem in the code. As Tim
also explains, do{}while(1) would silence the warning.

Regards,
Martin



More information about the Python-Dev mailing list