The pointer allocated to the `TransData` was being incorrectly incremented, causing misalignment and consequently `heap-buffer-overflow`. Because of this, `TD_NOTCONNECTED` was being set in a strange way that did not correspond to other types of `TransData`. The solution is to not increment the `TransData` pointer and set `TD_NOTCONNECTED` only for "unconnected" segments. The code was also a bit deduplicated.