Yes, I was not meaning to crticize the previous design choices. Most of this was common practice at the time, as far as I have seen in C code bases elsewhere. Unfortunately changes in the surrounding ecosystem have shifted the ground beneath Graphviz.
This is more or less what I did in the original fix. Unfortunately this made fdp
very unhappy. It introduces a number of “virtual” objects and then later expects to be able to look them up by pointer address. Unorthodox stuff in fdp
is also what’s blocking fixing HTML-like and non-HTML-like strings with the same content cannot coexist (#2089) · Issues · graphviz / graphviz · GitLab IIRC. We reverted the original fix as it wasn’t obvious how to adjust fdp
. Since then I have still not had time to debug either problem.