about summary refs log tree commit diff stats
path: root/010vm.cc
diff options
context:
space:
mode:
authorKartik K. Agaram <vc@akkartik.com>2015-11-01 18:14:18 -0800
committerKartik K. Agaram <vc@akkartik.com>2015-11-01 18:14:18 -0800
commited09f7384ad87e87e1035b948c7f88841570f292 (patch)
tree0a44bd97bca589f596ac6e816722945db8ffc139 /010vm.cc
parent6d79cc137b045ace341f666a67054bdeddef992e (diff)
downloadmu-ed09f7384ad87e87e1035b948c7f88841570f292.tar.gz
2339 - don't let dump_types modify Type
Diffstat (limited to '010vm.cc')
-rw-r--r--010vm.cc11
1 files changed, 9 insertions, 2 deletions
diff --git a/010vm.cc b/010vm.cc
index bdf4ec17..906a2cd1 100644
--- a/010vm.cc
+++ b/010vm.cc
@@ -392,7 +392,7 @@ string dump_types(const reagent& x) {
 void dump_types(type_tree* type, ostream& out) {
   // abbreviate a single-node tree to just its contents
   if (!type->left && !type->right) {
-    out << Type[type->value].name;
+    dump_type_name(type->value, out);
     return;
   }
   dump_types_tree(type, out);
@@ -403,7 +403,7 @@ void dump_types_tree(type_tree* type, ostream& out) {
   if (type->left)
     dump_types_tree(type->left, out);
   else
-    out << Type[type->value].name;
+    dump_type_name(type->value, out);
   out << " : ";
   if (type->right)
     dump_types_tree(type->right, out);
@@ -412,6 +412,13 @@ void dump_types_tree(type_tree* type, ostream& out) {
   out << ">";
 }
 
+void dump_type_name(recipe_ordinal type, ostream& out) {
+  if (Type.find(type) != Type.end())
+    out << Type[type].name;
+  else
+    out << "?";
+}
+
 string instruction::to_string() const {
   if (is_label) return label;
   ostringstream out;