diff --git a/ChangeLog b/ChangeLog index b03814b30..e68146419 100644 --- a/ChangeLog +++ b/ChangeLog @@ -20,10 +20,25 @@ * ABOUT-NLS: New upstream version. +2007-01-23 Kevin Ryde + + * configure.in (isinf, isnan): Use a volatile global to stop gcc + optimizing out the test. In particular this fixes solaris where there + isn't an isinf or isnan (though gcc still optimizes as if there is). + Reported by Hugh Sasse. + (AC_C_VOLATILE): New. + 2007-01-22 Han-Wen Nienhuys * .gitignore: new file. Make using git easier. +2007-01-22 Kevin Ryde + + * configure.in (AC_INIT): Don't use "echo -n", it's not portable and + in particular fails on solaris (resulting in literal "-n"s going into + the output, making the resulting configure unusable). Reported by + Hugh Sasse. + 2007-01-03 Han-Wen Nienhuys * autogen.sh (Module): only try to run render-bugs if it exists. diff --git a/NEWS b/NEWS index 9ea9cc7aa..6c2ae074f 100644 --- a/NEWS +++ b/NEWS @@ -34,6 +34,7 @@ Changes in 1.8.2 (since 1.8.1): * New procedures (see the manual for details) ** set-program-arguments +** make-vtable * Bugs fixed @@ -78,6 +79,8 @@ Changes in 1.8.1 (since 1.8.0): ** Build problems have been fixed on MacOS, SunOS, and QNX. +** `strftime' fix sign of %z timezone offset. + ** A one-dimensional array can now be 'equal?' to a vector. ** Structures, records, and SRFI-9 records can now be compared with `equal?'. diff --git a/configure.in b/configure.in index f9fa4f268..9f12fbd8e 100644 --- a/configure.in +++ b/configure.in @@ -4,7 +4,7 @@ dnl define(GUILE_CONFIGURE_COPYRIGHT,[[ -Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc. This file is part of GUILE @@ -27,8 +27,15 @@ Boston, MA 02110-1301, USA. AC_PREREQ(2.53) -AC_INIT(m4_esyscmd(. ./GUILE-VERSION && echo -n ${PACKAGE}), - m4_esyscmd(. ./GUILE-VERSION && echo -n ${GUILE_VERSION}), +dnl `patsubst' here deletes the newline which "echo" prints. We can't use +dnl "echo -n" since -n is not portable (see autoconf manual "Limitations of +dnl Builtins"), in particular on solaris it results in a literal "-n" in +dnl the output. +dnl +AC_INIT(patsubst(m4_esyscmd(. ./GUILE-VERSION && echo ${PACKAGE}),[ +]), + patsubst(m4_esyscmd(. ./GUILE-VERSION && echo ${GUILE_VERSION}),[ +]), [bug-guile@gnu.org]) AC_CONFIG_AUX_DIR([.]) AC_CONFIG_SRCDIR(GUILE-VERSION) @@ -218,6 +225,9 @@ AC_CHECK_LIB(uca, __uc_get_ar_bsp) AC_C_CONST +# "volatile" is used in a couple of tests below. +AC_C_VOLATILE + AC_C_INLINE if test "$ac_cv_c_inline" != no; then SCM_I_GSC_C_INLINE="\"${ac_cv_c_inline}\"" @@ -957,17 +967,19 @@ AC_CHECK_FUNCS(asinh acosh atanh copysign finite sincos trunc) # use so doesn't detect on macro-only systems like HP-UX. # AC_MSG_CHECKING([for isinf]) -AC_LINK_IFELSE( -[#include -int main () { return (isinf(0.0) != 0); }], +AC_LINK_IFELSE(AC_LANG_SOURCE( +[[#include +volatile double x = 0.0; +int main () { return (isinf(x) != 0); }]]), [AC_MSG_RESULT([yes]) AC_DEFINE(HAVE_ISINF, 1, [Define to 1 if you have the `isinf' macro or function.])], [AC_MSG_RESULT([no])]) AC_MSG_CHECKING([for isnan]) -AC_LINK_IFELSE( -[#include -int main () { return (isnan(0.0) != 0); }], +AC_LINK_IFELSE(AC_LANG_SOURCE( +[[#include +volatile double x = 0.0; +int main () { return (isnan(x) != 0); }]]), [AC_MSG_RESULT([yes]) AC_DEFINE(HAVE_ISNAN, 1, [Define to 1 if you have the `isnan' macro or function.])], diff --git a/libguile/ChangeLog b/libguile/ChangeLog index df0648128..77bff0b5f 100644 --- a/libguile/ChangeLog +++ b/libguile/ChangeLog @@ -1,3 +1,26 @@ +2007-03-08 Kevin Ryde + + * struct.c, struct.h (scm_make_vtable): New function, providing + `make-vtable'. + * stacks.c (scm_init_stacks): Use it. + +2007-03-06 Kevin Ryde + + * struct.c (scm_make_struct): Check for R,W,O at end of layout when + allocating a tail array. If there's no such then those tail fields + are uninitialized and garbage SCMs there can cause a segv if printed + (after fetching with struct-ref). + +2007-02-22 Kevin Ryde + + * scmsigs.c (scm_sleep): In docstring, cross refence usleep. + (scm_usleep): Update docstring per manual, cross reference sleep. + + * struct.c (scm_make_struct): Move SCM_CRITICAL_SECTION_END up so that + scm_struct_init is not within that section. scm_struct_init can + thrown an error, which within a critical section results in an + abort(). + 2007-02-19 Neil Jerram * Makefile.am (noinst_HEADERS): Add private-options.h, so that it @@ -39,10 +62,24 @@ acquiring the locale mutex. (scm_init_posix): No longer initialize SCM_I_LOCALE_MUTEX here. +2007-01-27 Kevin Ryde + + * ports.c (scm_port_line, scm_set_port_line_x), read.c + (scm_i_input_error, scm_lreadr, scm_lreadrecparen): Corrections to + port line number type, should be "long" not "int", as per line_number + field of scm_t_port. (Makes a difference only on 64-bit systems, and + only then for a linenum above 2Gig.) + 2007-01-25 Han-Wen Nienhuys * vector.c: remove comment as per kryde's request. +2007-01-25 Kevin Ryde + + * sort.c (scm_stable_sort): Return empty list for input empty list, as + done in guile 1.6 and as always done by plain `sort'. Was falling + through to SCM_WRONG_TYPE_ARG. Reported by Ales Hvezda. + 2007-01-22 Han-Wen Nienhuys * vectors.c (s_scm_vector_move_right_x): complain about naming. diff --git a/libguile/read.c b/libguile/read.c index de2e87bed..9d90135f4 100644 --- a/libguile/read.c +++ b/libguile/read.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1995,1996,1997,1999,2000,2001,2003, 2004, 2006 Free Software +/* Copyright (C) 1995,1996,1997,1999,2000,2001,2003, 2004, 2006, 2007 Free Software * Foundation, Inc. * * This library is free software; you can redistribute it and/or @@ -91,7 +91,7 @@ scm_i_input_error (char const *function, scm_simple_format (string_port, scm_from_locale_string ("~A:~S:~S: ~A"), scm_list_4 (fn, - scm_from_int (SCM_LINUM (port) + 1), + scm_from_long (SCM_LINUM (port) + 1), scm_from_int (SCM_COL (port) + 1), scm_from_locale_string (message))); @@ -407,7 +407,7 @@ scm_lreadr (SCM *tok_buf, SCM port, SCM *copy) SCM sharp = scm_get_hash_procedure (c); if (scm_is_true (sharp)) { - int line = SCM_LINUM (port); + long line = SCM_LINUM (port); int column = SCM_COL (port) - 2; SCM got; @@ -533,7 +533,7 @@ scm_lreadr (SCM *tok_buf, SCM port, SCM *copy) if (scm_is_true (sharp)) { - int line = SCM_LINUM (port); + long line = SCM_LINUM (port); int column = SCM_COL (port) - 2; SCM got; @@ -823,7 +823,7 @@ scm_lreadrecparen (SCM *tok_buf, SCM port, char *name, SCM *copy) register SCM tl, tl2 = SCM_EOL; SCM ans, ans2 = SCM_EOL; /* Need to capture line and column numbers here. */ - int line = SCM_LINUM (port); + long line = SCM_LINUM (port); int column = SCM_COL (port) - 1; c = scm_flush_ws (port, name); diff --git a/libguile/stacks.c b/libguile/stacks.c index 922c52231..7490db215 100644 --- a/libguile/stacks.c +++ b/libguile/stacks.c @@ -1,5 +1,5 @@ /* Representation of stack frame debug information - * Copyright (C) 1996,1997,2000,2001, 2006 Free Software Foundation + * Copyright (C) 1996,1997,2000,2001, 2006, 2007 Free Software Foundation * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -741,14 +741,10 @@ SCM_DEFINE (scm_frame_overflow_p, "frame-overflow?", 1, 0, 0, void scm_init_stacks () { - SCM vtable; - SCM stack_layout - = scm_make_struct_layout (scm_from_locale_string (SCM_STACK_LAYOUT)); - vtable = scm_make_vtable_vtable (scm_nullstr, SCM_INUM0, SCM_EOL); - scm_stack_type - = scm_permanent_object (scm_make_struct (vtable, SCM_INUM0, - scm_cons (stack_layout, - SCM_EOL))); + scm_stack_type = + scm_permanent_object + (scm_make_vtable (scm_from_locale_string (SCM_STACK_LAYOUT), + SCM_UNDEFINED)); scm_set_struct_vtable_name_x (scm_stack_type, scm_from_locale_symbol ("stack")); #include "libguile/stacks.x"