aboutsummaryrefslogtreecommitdiff
path: root/source/portals.d
diff options
context:
space:
mode:
authorHolden Rohrer <hr@hrhr.dev>2021-09-01 11:17:44 -0400
committerHolden Rohrer <hr@hrhr.dev>2021-09-01 11:17:44 -0400
commit22a340479c17a6d3460b813179aee035a14e4ae2 (patch)
treed3b02c6e85e995c732b6bba471a5a2cc1bbb1835 /source/portals.d
parent9b80e6eef31b0c852c772ba6552e419856fe0aa9 (diff)
fixed bug where file saving would crash if a portal was unpaired
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);
}
}