From 5a57611749dbf964f7f2fb8d21a00d8b52a326cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADtor=20Santos=20Costa?= Date: Thu, 20 Jun 2013 10:47:44 -0500 Subject: [PATCH 1/3] copyright changes --- os/pl-ctype.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/os/pl-ctype.c b/os/pl-ctype.c index 5e5a6d1ce..e8e736265 100644 --- a/os/pl-ctype.c +++ b/os/pl-ctype.c @@ -1,11 +1,10 @@ -/* $Id$ - - Part of SWI-Prolog +/* Part of SWI-Prolog Author: Jan Wielemaker - E-mail: wielemak@science.uva.nl + E-mail: J.Wielemaker@vu.nl WWW: http://www.swi-prolog.org - Copyright (C): 1985-2007, University of Amsterdam + Copyright (C): 1985-2013, University of Amsterdam + VU University Amsterdam This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public From 0726597812a197c4ea5689dec804c4956646eee7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADtor=20Santos=20Costa?= Date: Thu, 20 Jun 2013 10:48:00 -0500 Subject: [PATCH 2/3] error handling --- os/pl-write.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/os/pl-write.c b/os/pl-write.c index b51ff14d0..322fdd2a4 100644 --- a/os/pl-write.c +++ b/os/pl-write.c @@ -179,9 +179,13 @@ bind_varnames(term_t varnames ARG_LD) Term tv, t2, t1; if (!IsApplTerm(tl)) return FALSE; - if ((f = FunctorOfTerm(tl)) != FunctorEq) + if ((f = FunctorOfTerm(tl)) != FunctorEq) { return FALSE; + } t1 = ArgOfTerm(1, tl); + if (IsVarTerm(t1)) { + return PL_error(NULL, 0, "variable_names", ERR_INSTANTIATION, 0, t1); + } t2 = ArgOfTerm(2, tl); tv = Yap_MkApplTerm(LOCAL_FunctorVar, 1, &t1); if (IsVarTerm(t2)) { From 44dccc00bb1399c9f9fef80b4ecbebc0227e8630 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADtor=20Santos=20Costa?= Date: Thu, 20 Jun 2013 12:11:29 -0500 Subject: [PATCH 3/3] fix exception passing from SWI --- library/dialect/swi/fli/swi.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/library/dialect/swi/fli/swi.c b/library/dialect/swi/fli/swi.c index 77e3f75ff..5bffd8180 100755 --- a/library/dialect/swi/fli/swi.c +++ b/library/dialect/swi/fli/swi.c @@ -2265,8 +2265,8 @@ PL_discard_foreign_frame(fid_t f) LOCAL_execution = env->old; ASP = LCL0-CurSlot; B = B->cp_b; - EX = NULL; - LOCAL_BallTerm = EX; + //LOCAL_BallTerm = EX; + //EX = NULL; free(env); } @@ -2331,7 +2331,7 @@ X_API void PL_close_query(qid_t qi) { CACHE_REGS EX = NULL; - if (EX && !(qi->flags & (PL_Q_CATCH_EXCEPTION|PL_Q_PASS_EXCEPTION))) { + if (EX && !(qi->flags & (PL_Q_CATCH_EXCEPTION))) { EX = NULL; } /* need to implement backtracking here */