diff options
Diffstat (limited to 'source/portals.d')
-rw-r--r-- | source/portals.d | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/source/portals.d b/source/portals.d index 7bb5dc2..000e182 100644 --- a/source/portals.d +++ b/source/portals.d @@ -23,10 +23,13 @@ struct Portal { string toString(int[Portal* ] idMap) in { - assert(pair in idMap); + assert(pair == null || pair in idMap); } do { - return format!`%s, %s: %d`(y, x, idMap[pair]); + if (pair == null) + return format!`%s, %s: -1`(y, x); + else + return format!`%s, %s: %d`(y, x, idMap[pair]); } void fromString(string s, Portal[int] portalsById) { @@ -42,9 +45,7 @@ struct Portal { s.formattedRead!"%d"(id); auto p = id in portalsById; if (p) { - p.pairWith(this); // this is a REALLY big bug. Portal() is - // being copied by value into the dict, - // so it's not using its final ref. + p.pairWith(this); } } |