From 22a340479c17a6d3460b813179aee035a14e4ae2 Mon Sep 17 00:00:00 2001
From: Holden Rohrer
Date: Wed, 1 Sep 2021 11:17:44 -0400
Subject: fixed bug where file saving would crash if a portal was unpaired
---
source/app.d | 1 +
source/portals.d | 11 ++++++-----
2 files changed, 7 insertions(+), 5 deletions(-)
(limited to 'source')
diff --git a/source/app.d b/source/app.d
index 7faaa75..ec46012 100644
--- a/source/app.d
+++ b/source/app.d
@@ -83,6 +83,7 @@ void main() {
} catch (Exception e) {
}
}
+ disp.print();
break;
case 'l':
auto filename = stdscr.readquery("Load:");
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);
}
}
--
cgit