diff --git a/msvc/Makefile b/msvc/Makefile index 73ea6b77a..17e81c791 100755 --- a/msvc/Makefile +++ b/msvc/Makefile @@ -10,8 +10,8 @@ srcdir = ..\src SHORT_SITE_NAME = LONG_SITE_NAME = -ECL_VERSION = 16.1.2 -ECL_VERSION_NUMBER= 161002 +ECL_VERSION = 16.1.3-dev +ECL_VERSION_NUMBER= 160103 ARCHITECTURE = PENTIUM4 SOFTWARE_TYPE = NT SOFTWARE_VERSION = 5.0 diff --git a/src/cmp/cmpcall.lsp b/src/cmp/cmpcall.lsp index 37f25515b..7383a351e 100644 --- a/src/cmp/cmpcall.lsp +++ b/src/cmp/cmpcall.lsp @@ -268,7 +268,8 @@ (env nil)) (case (fun-closure fun) (CLOSURE - (setf env (environment-accessor fun))) + (when (plusp *max-env*) + (setf env (environment-accessor fun)))) (LEXICAL (let ((lex-lvl (fun-level fun))) (dotimes (n lex-lvl) diff --git a/src/cmp/cmptop.lsp b/src/cmp/cmptop.lsp index 7a6c227ce..b94021d26 100644 --- a/src/cmp/cmptop.lsp +++ b/src/cmp/cmptop.lsp @@ -436,14 +436,17 @@ ;; should definitely keep this in memory. (when (plusp *max-lex*) (wt-nl "volatile cl_object lex" *level* "[" *max-lex* "];")) - (when (plusp *max-env*) - (unless (eq closure-type 'CLOSURE) - (wt-nl "cl_object " *volatile* "env0;")) - ;; Note that the closure structure has to be marked volatile - ;; or else GCC may optimize away writes into it because it - ;; does not know it shared with the rest of the world. + + (unless (eq closure-type 'CLOSURE) + (wt-nl "cl_object " *volatile* "env0;")) + + (when (plusp *max-env*) + ;; Closure structure has to be marked volatile or else GCC may + ;; optimize away writes into it because it does not know it shared + ;; with the rest of the world. (when *aux-closure* (wt-nl "volatile struct ecl_cclosure aux_closure;")) + (wt-nl "cl_object " *volatile*) (loop for i from 0 below *max-env* for comma = "" then ", " diff --git a/src/configure b/src/configure index d55c5e53a..7b35a4a99 100755 --- a/src/configure +++ b/src/configure @@ -1,7 +1,7 @@ #! /bin/sh # From configure.ac Revision. # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for ecl 16.1.2. +# Generated by GNU Autoconf 2.69 for ecl 16.1.3-dev. # # # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. @@ -578,8 +578,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='ecl' PACKAGE_TARNAME='ecl' -PACKAGE_VERSION='16.1.2' -PACKAGE_STRING='ecl 16.1.2' +PACKAGE_VERSION='16.1.3-dev' +PACKAGE_STRING='ecl 16.1.3-dev' PACKAGE_BUGREPORT='' PACKAGE_URL='' @@ -1365,7 +1365,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures ecl 16.1.2 to adapt to many kinds of systems. +\`configure' configures ecl 16.1.3-dev to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1434,7 +1434,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of ecl 16.1.2:";; + short | recursive ) echo "Configuration of ecl 16.1.3-dev:";; esac cat <<\_ACEOF @@ -1609,7 +1609,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -ecl configure 16.1.2 +ecl configure 16.1.3-dev generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2196,7 +2196,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by ecl $as_me 16.1.2, which was +It was created by ecl $as_me 16.1.3-dev, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -10199,7 +10199,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by ecl $as_me 16.1.2, which was +This file was extended by ecl $as_me 16.1.3-dev, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -10261,7 +10261,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -ecl config.status 16.1.2 +ecl config.status 16.1.3-dev configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff --git a/src/configure.ac b/src/configure.ac index 137c8b74b..5617bfa94 100644 --- a/src/configure.ac +++ b/src/configure.ac @@ -8,7 +8,7 @@ dnl AUTOCONF configuration for ECL dnl Giuseppe Attardi 25.1.1994 dnl -AC_INIT([ecl],[16.1.2],[]) +AC_INIT([ecl],[16.1.3-dev],[]) AC_REVISION([$Revision$]) AC_CONFIG_SRCDIR([bare.lsp.in]) AC_CONFIG_AUX_DIR([gmp]) diff --git a/src/tests/regressions/tests/compiler.lsp b/src/tests/regressions/tests/compiler.lsp index 0c7124586..457a538ab 100644 --- a/src/tests/regressions/tests/compiler.lsp +++ b/src/tests/regressions/tests/compiler.lsp @@ -1150,3 +1150,20 @@ (compile 'check-single-wildcard) (check-single-wildcard "dan*" 3)) T) + +;;; Date: 2016-02-10 +;;; Fixed: Daniel KochmaƄski +;;; Description +;;; Aux closures created by C compiler weren't handled correctly +;;; in respect of the environment and declarations of the +;;; variables +(deftest compiler.0050.cmptop/call.1 + (funcall (compile nil '(lambda () + (labels + ((fun-2 () (fun-3 'cool)) + (fun-3 (clause-var) + (flet ((fun-4 () clause-var)) + (fun-4)))) + (let ((fun-1 (lambda () (fun-2)))) + (funcall fun-1)))))) + cool)