DISABLE FDs (REMOVE ME).
[jackhill/mal.git] / ada / reader.adb
index d4f3281..94ecc4a 100644 (file)
@@ -138,20 +138,17 @@ package body Reader is
 
          when '"' => -- a string
 
-            -- Skip over "
-            J := J + 1;
-            while J <= Str_Len and then
-               (Element (Saved_Line, J) /= '"' or else
-                 Element (Saved_Line, J-1) = '\') loop
+            loop
+               if Str_Len <= J then
+                  raise String_Error;
+               end if;
                J := J + 1;
+               exit when Element (Saved_Line, J) = '"';
+               if Element (Saved_Line, J) = '\' then
+                  J := J + 1;
+               end if;
             end loop;
 
-            -- So we either ran out of string..
-            if J > Str_Len then
-               raise String_Error;
-            end if;
-
-            -- or we reached an unescaped "
             Res := (ID => Str_Tok, Start_Char => I, Stop_Char => J);
             Char_To_Read := J + 1;