See below for the patch I used
Sorry for the length of the example
Input:
Fix:
digraph G {
rankdir=LR;
node [shape=box];
size = "7.5,10.0";
ratio = "fill";
center =1;
/* Node Definitions */
dc1 [shape=plaintext,label="DC 1"];
dc10 [shape=plaintext,label="DC 10"];
dc100 [shape=plaintext,label="DC 100"];
{ rank = same; "dc1"; "dc10"; "dc100"; }
/* Link Definitions */
/* Marking Unused Dialing Plans */
no_dc [shape=plaintext,label="NOTHING"];
{ rank = min; "no_dc"; }
}
dotneato/dotgen/rank.c in function minmax_edges()
srclen = sinklen = 0;
if ((g->u.maxset == NULL) && (g->u.minset == NULL)) return;
#ifdef RL_2001_05_30_BUGFIX
/* We returned for both pointers NULL, but not if either one. */
g->u.minset = UF_find(g->u.minset);
g->u.maxset = UF_find(g->u.maxset);
#else
if ( g->u.minset != 0 ) g->u.minset = UF_find(g->u.minset);
if ( g->u.maxset != 0 ) g->u.maxset = UF_find(g->u.maxset);
#endif