about summary refs log tree commit diff stats
path: root/016dilated_reagent.cc
diff options
context:
space:
mode:
authorKartik K. Agaram <vc@akkartik.com>2016-08-22 08:39:05 -0700
committerKartik K. Agaram <vc@akkartik.com>2016-08-22 08:39:05 -0700
commit2d7131670e771af8bac13c315ba262cb3a321505 (patch)
tree60814e3e851ebef674beb58ab72b91d6ef734532 /016dilated_reagent.cc
parentaefe0592e812dd2384a3c49d5b02a58010a14e36 (diff)
downloadmu-2d7131670e771af8bac13c315ba262cb3a321505.tar.gz
3244
Diffstat (limited to '016dilated_reagent.cc')
-rw-r--r--016dilated_reagent.cc14
1 files changed, 12 insertions, 2 deletions
diff --git a/016dilated_reagent.cc b/016dilated_reagent.cc
index 09715848..38bb5578 100644
--- a/016dilated_reagent.cc
+++ b/016dilated_reagent.cc
@@ -61,17 +61,27 @@ string slurp_balanced_bracket(istream& in) {
   while (in >> c) {
     if (c == '(') open_brackets.push_back(c);
     if (c == ')') {
+      if (open_brackets.empty() || open_brackets.back() != '(') {
+        raise << "unbalanced ')'\n" << end();
+        continue;
+      }
       assert(open_brackets.back() == '(');
       open_brackets.pop_back();
     }
     if (c == '[') open_brackets.push_back(c);
     if (c == ']') {
-      assert(open_brackets.back() == '[');
+      if (open_brackets.empty() || open_brackets.back() != '[') {
+        raise << "unbalanced ']'\n" << end();
+        continue;
+      }
       open_brackets.pop_back();
     }
     if (c == '{') open_brackets.push_back(c);
     if (c == '}') {
-      assert(open_brackets.back() == '{');
+      if (open_brackets.empty() || open_brackets.back() != '{') {
+        raise << "unbalanced '}'\n" << end();
+        continue;
+      }
       open_brackets.pop_back();
     }
     result << c;