From 14a162dc6a1230af4dc4cc09527c949c11e534e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADtor=20Santos=20Costa?= Date: Sat, 13 Dec 2008 21:22:07 +0000 Subject: [PATCH] fix compilation of NewX = f instructions. --- C/compiler.c | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/C/compiler.c b/C/compiler.c index 0f122ea34..15fa1ba56 100644 --- a/C/compiler.c +++ b/C/compiler.c @@ -872,19 +872,24 @@ c_eq(Term t1, Term t2, compiler_struct *cglobs) } /* first argument is an unbound var */ if (IsNewVar(t1)) { - c_var(t1, 0, 0, 0, cglobs); + if (IsVarTerm(t2)) { + c_var(t2, 1, 0, 0, cglobs); + } else { + c_arg(1, t2, 0, 0, cglobs); + } + cglobs->onhead = TRUE; + c_var(t1, 1, 0, 0, cglobs); + cglobs->onhead = FALSE; } else { c_var(t1, 0, 0, 0, cglobs); cglobs->onhead = TRUE; + if (IsVarTerm(t2)) { + c_var(t2, 0, 0, 0, cglobs); + } else { + c_arg(0, t2, 0, 0, cglobs); + } + cglobs->onhead = FALSE; } - if (IsVarTerm(t2)) { - cglobs->onhead = TRUE; - c_var(t2, 0, 0, 0, cglobs); - } else { - cglobs->onhead = TRUE; - c_arg(0, t2, 0, 0, cglobs); - } - cglobs->onhead = FALSE; } static void