From: Mark Thom Date: Sun, 11 Feb 2018 19:03:13 +0000 (-0700) Subject: correct allocation bugs. X-Git-Tag: v0.8.110~571 X-Git-Url: https://git.sagredo.dev/?a=commitdiff_plain;h=54e36f0d24d7daac925fc1ec3fc5fced8d943529;p=scryer-prolog.git correct allocation bugs. --- diff --git a/src/prolog/codegen.rs b/src/prolog/codegen.rs index 6e16dcc9..91b54dad 100644 --- a/src/prolog/codegen.rs +++ b/src/prolog/codegen.rs @@ -574,7 +574,7 @@ impl<'a, TermMarker: Allocator<'a>> CodeGenerator<'a, TermMarker> let mut code = Vec::new(); if let &QueryTerm::Term(ref term) = p0 { - self.marker.reset_arg(term.arity()); + self.marker.reset_arg_at_head(term); self.compile_seq_prelude(&conjunct_info, &mut code); if let &Term::Clause(..) = term { @@ -586,7 +586,7 @@ impl<'a, TermMarker: Allocator<'a>> CodeGenerator<'a, TermMarker> } } - self.marker.reset_arg_at_head(term); + // self.marker.reset_arg_at_head(term); let iter = ChunkedIterator::from_rule_body(p1, clauses); try!(self.compile_seq(iter, &conjunct_info, &mut code, false)); diff --git a/src/prolog/io.rs b/src/prolog/io.rs index 55d0d9ee..0affc722 100644 --- a/src/prolog/io.rs +++ b/src/prolog/io.rs @@ -517,7 +517,7 @@ fn compile_decl<'a, 'b: 'a>(wam: &'a mut Machine, tl: &'b TopLevel, queue: &'b V if let Err(e) = compile_appendix(&mut code, queue) { return EvalSession::from(e); }; - + if !code.is_empty() { if let Some(name) = tl.name() { wam.add_user_code(name, tl.arity(), code)