]> Repositorios git - scryer-prolog.git/commitdiff
print bounded depth partial strings correctly
authorMark Thom <[email protected]>
Mon, 7 Feb 2022 21:09:22 +0000 (14:09 -0700)
committerMark Thom <[email protected]>
Mon, 7 Feb 2022 21:09:22 +0000 (14:09 -0700)
src/heap_print.rs

index 1dfba3759da614ecc22a56712a2fff658346e80e..63e53d7384f49aad47e1f12a1cca264f44f22c67 100644 (file)
@@ -1188,15 +1188,19 @@ impl<'a, Outputter: HCValueOutputter> HCPrinter<'a, Outputter> {
                         self.state_stack.push(TokenOrRedirect::HeadTailSeparator);
                     }
 
-                    for (char_count, c) in pstr.chars().rev().enumerate() {
+                    let state_stack_len = self.state_stack.len();
+
+                    for (char_count, c) in pstr.chars().enumerate() {
                         if max_depth > 0 && char_count + 1 >= max_depth {
                             break;
                         }
 
-                        self.state_stack.push(TokenOrRedirect::Char(c));
                         self.state_stack.push(TokenOrRedirect::Comma);
+                        self.state_stack.push(TokenOrRedirect::Char(c));
                     }
 
+                    self.state_stack[state_stack_len ..].reverse();
+
                     if let Some(TokenOrRedirect::Comma) = self.state_stack.last() {
                         self.state_stack.pop();
                     }