aboutsummaryrefslogtreecommitdiff
path: root/source/portals.d
diff options
context:
space:
mode:
Diffstat (limited to 'source/portals.d')
-rw-r--r--source/portals.d11
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);
}
}