Change Entry initialisation protocol
authorIustin Pop <iustin@k1024.org>
Fri, 29 Nov 2019 13:28:06 +0000 (14:28 +0100)
committerIustin Pop <iustin@k1024.org>
Fri, 29 Nov 2019 13:28:06 +0000 (14:28 +0100)
commit27e8980a256e305e028a0afc381ac196c3e3ba3d
treed7dcce28391473fc0fd8e53dfbaebcd58b4b1aac
parent277422f5d7fd10cf4eb3f55164015f6b78bb3c8a
Change Entry initialisation protocol

This fixes very large and significant bugs - segfaults and memory
leaks - that were present for uninitialised object, more precisely
created but not init'ed ones.

I spent quite a bit of time thinking back on forth how to fix this,
and from the two options of:

- check initialised status on all code paths, or
- don't ever allow invalid/un-initialised objects

The latter one seems the correct one, even though the Python C API
docs imply that doing actual stuff in `__new__` should be "rare".

Tests for reference leaks and wrong re-init added as well; these would
have caught at least memory leaks before.
NEWS
acl.c
tests/test_acls.py