Commotiond, for efficiency reasons, tries to avoid doing copies of data structures where possible. Therefore, the network responses to some commands are serialized directly out of the standing data structures where it stores, for instance, profile information. Unfortunately, a recent bugfix revealed that halloc is not behaving as expected, and so some of those standing data structures were getting deleted as responses were getting freed. This pull request adds unsafe versions of the tree and list insert functions, which are functionally identical other than that they don't attempt to hattach new objects to those data structures; memory management is left up to the programmer. These are now used within certain areas of daemon.c so that we can still free all response objects but still access the standing data structures with impunity without worry of freeing them by accident.
To test:
Run commotion help and verify that the output is as expected.
Run it a second time and verify that the 'help' output is identical.
Repeat steps 1 and 2 for the 'get', 'profiles' and 'state' commands.
Commotiond, for efficiency reasons, tries to avoid doing copies of data structures where possible. Therefore, the network responses to some commands are serialized directly out of the standing data structures where it stores, for instance, profile information. Unfortunately, a recent bugfix revealed that halloc is not behaving as expected, and so some of those standing data structures were getting deleted as responses were getting freed. This pull request adds unsafe versions of the tree and list insert functions, which are functionally identical other than that they don't attempt to hattach new objects to those data structures; memory management is left up to the programmer. These are now used within certain areas of daemon.c so that we can still free all response objects but still access the standing data structures with impunity without worry of freeing them by accident.
To test:
commotion help
and verify that the output is as expected.