merge from 1.8 branch
authorKevin Ryde <user42@zip.com.au>
Wed, 7 Mar 2007 23:35:55 +0000 (23:35 +0000)
committerKevin Ryde <user42@zip.com.au>
Wed, 7 Mar 2007 23:35:55 +0000 (23:35 +0000)
ChangeLog
NEWS
configure.in
libguile/ChangeLog
libguile/read.c
libguile/stacks.c

index b03814b..e681464 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
 
        * ABOUT-NLS: New upstream version.
 
+2007-01-23  Kevin Ryde  <user42@zip.com.au>
+
+       * 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  <hanwen@lilypond.org>
 
        * .gitignore: new file. Make using git easier.
 
+2007-01-22  Kevin Ryde  <user42@zip.com.au>
+
+       * 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  <hanwen@lilypond.org>
 
        * autogen.sh (Module): only try to run render-bugs if it exists.
diff --git a/NEWS b/NEWS
index 9ea9cc7..6c2ae07 100644 (file)
--- 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?'.
index f9fa4f2..9f12fbd 100644 (file)
@@ -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 <math.h> so doesn't detect on macro-only systems like HP-UX.
 #
 AC_MSG_CHECKING([for isinf])
-AC_LINK_IFELSE(
-[#include <math.h>
-int main () { return (isinf(0.0) != 0); }],
+AC_LINK_IFELSE(AC_LANG_SOURCE(
+[[#include <math.h>
+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 <math.h>
-int main () { return (isnan(0.0) != 0); }],
+AC_LINK_IFELSE(AC_LANG_SOURCE(
+[[#include <math.h>
+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.])],
index df06481..77bff0b 100644 (file)
@@ -1,3 +1,26 @@
+2007-03-08  Kevin Ryde  <user42@zip.com.au>
+
+       * struct.c, struct.h (scm_make_vtable): New function, providing
+       `make-vtable'.
+       * stacks.c (scm_init_stacks): Use it.
+
+2007-03-06  Kevin Ryde  <user42@zip.com.au>
+
+       * 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  <user42@zip.com.au>
+
+       * 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  <neil@ossau.uklinux.net>
 
        * Makefile.am (noinst_HEADERS): Add private-options.h, so that it
        acquiring the locale mutex.
        (scm_init_posix): No longer initialize SCM_I_LOCALE_MUTEX here.
 
+2007-01-27  Kevin Ryde  <user42@zip.com.au>
+
+       * 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  <hanwen@lilypond.org>
 
        * vector.c: remove comment as per kryde's request.
 
+2007-01-25  Kevin Ryde  <user42@zip.com.au>
+
+       * 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  <hanwen@lilypond.org>
 
        * vectors.c (s_scm_vector_move_right_x): complain about naming.
index de2e87b..9d90135 100644 (file)
@@ -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);
index 922c522..7490db2 100644 (file)
@@ -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"