Assertions are added to the code to ensure expected behaviour. The order of 
object deserialisation was chosen very carefully to minimise circular 
dependencies (see init/state.h for details), so we cannot arbitrarily refactor 
that part of the code without careful planning: even if we _did_ do such a 
refactor, the assertions would be invaluable to ensure that we hadn't broken 
something horribly.

The reason we don't have those NIH_LIST_EMPTY assertions in the deserialisation 
code for the remaining objects (JobClass, Job and ConfFile) is that they are 
not lists; they are NihHash objects and there is no equivalent to 
NIH_LIST_EMPTY for hashes. We _could_ simulate one using NIH_HASH_FOREACH* but 
we'd need to take great care to ensure the hash was not already being iterated. 
In summary, we probably should look into adding additional asserts for those 
objects.

-- 
https://code.launchpad.net/~jamesodhunt/upstart/bug-1199778/+merge/174138
Your team Upstart Reviewers is subscribed to branch lp:upstart.

-- 
upstart-devel mailing list
[email protected]
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/upstart-devel

Reply via email to