Fixes <http://bugs.gnu.org/14864>.
Reported by Göran Weinholt <goran@weinholt.se>.
* libguile/vm-i-scheme.c (ash): Fallback to 'scm_ash' for right shifts
with counts >= SCM_I_FIXNUM_BIT, since '>>' is not guaranteed to work
correctly for large counts.
Fixes <http://bugs.gnu.org/14864>.
Reported by Göran Weinholt <goran@weinholt.se>.
* module/rnrs/arithmetic/bitwise.scm (bitwise-bit-count): If the
argument is negative, return the 'bitwise-not' of the result of
'logcount', as per R6RS. Previously, 'bitwise-bit-count' was
identical to 'logcount'.
Reported and debugged by Andrew Gaylard <ag@computer.org>.
* libguile/threads.c (remqueue): When removing the last element from a
queue with more than one element, set (car q) to the previous element.
* THANKS: Thank Andrew Gaylard.
* test-suite/tests/coverage.test ("procedure-execution-count")["called
from C"]: Throw 'unresolved when `scm_call_2' cannot be resolved.
Reported by Eli Zaretskii <eliz@gnu.org>.
* test-suite/tests/foreign.test ("procedure->pointer")[qsort]: Wrap in
`false-if-exception'.
["qsort", "qsort, wrong return type", "qsort, wrong arity"]: Throw
'unresolved when QSORT if #f.
Reported by Eli Zaretskii <eliz@gnu.org>.
* test-suite/standalone/test-unwind.c (check_ports)[__MINGW32__]: Use
$TEMP, $TMP, or / as the value for TMPDIR.
Patch by Eli Zaretskii <eliz@gnu.org>.
Reported by Chaos Eternal <chaoseternal@shlug.org>
Based on a patch by Nala Ginrut <nalaginrut@gmail.com>
* libguile/threads.c (scm_unlock_mutex_timed): If 'timeout' argument
is false, interpret that as no timeout.
* doc/ref/api-scheduling.texi (Mutexes and Condition Variables):
Update documentation.
Reported by Mark H. Weaver.
* libguile/keywords.c (scm_c_bind_keyword_arguments): Use
`scm_error_scm' instead of `scm_error'. Pass the faulty keyword
enclosed in a list as the last argument.
* test-suite/tests/optargs.test ("scm_c_bind_keyword_arguments"): New
test prefix.
* libguile/vm.c (vm_error_kwargs_invalid_keyword,
vm_error_kwargs_unrecognized_keyword): Add parameter. Pass it
enclosed in a list as the last argument to `scm_error_scm'.
* libguile/vm-i-system.c (bind_kwargs): Adjust accordingly.
* libguile/eval.c (error_invalid_keyword, error_unrecognized_keyword):
Add parameter.
(prepare_boot_closure_env_for_apply): Adjust accordingly.
* module/ice-9/eval.scm (primitive-eval): Likewise.
* libguile/error.c (scm_error_scm): Mention `keyword-argument-error' in
docstring.
* module/ice-9/boot-9.scm (keyword-error-printer): New procedure; use it.
* test-suite/tests/optargs.test (c&e, with-test-prefix/c&e): Remove.
("define*")["unrecognized keyword"]: Test the value passed along the
`keyword-argument-error' exception.
["invalid keyword"]: New test.
* doc/ref/api-control.texi (Error Reporting): Update `scm-error'
description.
* module/web/uri.scm (uri-encode): the hexadecimal percent-encoding %HH
is now uppercased as suggested by RFC3986:
"For consistency, URI producers and normalizers should use
uppercase hexadecimal digits for all percent-encodings."
* test-suite/tests/web-uri.test ("encode"): update tests.
Fixes <http://bugs.gnu.org/14203> reported by Nikita Karetnikov.
* doc/ref/api-macros.texi (Defining Macros, Syntax Rules): Fix
definition of 'my-or' example macro to use the let-bound variable.
Partly fixes <http://bugs.gnu.org/14042>.
Reported by Marc Girod <marc.girod@gmail.com>
* test-suite/standalone/test-language: Use a shell construct that
/bin/sh on Solaris 10 can understand.
* test-suite/tests/ports.test ("BOM not discarded unless at start of
UTF-16 stream", "BOM not discarded unless at start of UTF-32 stream"):
Adjust tests to reflect the fact that, in the absence of a BOM, big
endian will be used by default for the "UTF-16" and "UTF-32"
encodings.
* libguile/stime.c: Remove #ifdef HAVE_SYS_TIMES_H, HAVE_SYS_TYPES_H,
and HAVE_STRING_H since those headers are always provided by Gnulib
when the corresponding macro is undefined. Fixes a regression on
MinGW introduced by commit 40e2a31.
* GUILE-VERSION (GUILE_MICRO_VERSION): Increment.
(LIBGUILE_INTERFACE_CURRENT): Increment, to account for new C
functions `scm_c_bind_keyword_arguments' et al.
(LIBGUILE_INTERFACE_AGE): Increment.
* libguile/stime.c (scm_init_stime): Fix previous patch. At this point
in the source, we definitely have a run-time function, but don't
necessarily have a real-time function.
* configure.ac: Remove checks for pipe, stftime, times, and select, as
our Gnulib modules already ensure they are provided.
* libguile/stime.c: Rely on gnulib providing `times'.
Reported by Nikita Karetnikov <nikita@karetnikov.org>.
* doc/ref/api-binding.texi (Local Bindings): Remove the incorrect claim
that improperly accessing a letrec-bound variable during evaluation of
its initializers will necessarily cause an error to be signalled.
Reported by Samuel Thibault <samuel.thibault@gnu.org>
and Peter Simons <simons@cryp.to>.
* test-suite/tests/00-socket.test ("AF_INET6/SOCK_STREAM"): Throw
`unresolved' when `bind' throws EADDRNOTAVAIL.
* libguile/filesys.c (scm_sendfile): In Linux-style sendfile(2) code, if
EINTR or EAGAIN occurs, set result to 1 (not 0) so that we actually
keep going. In non-sendfile(2) code, deal gracefully with short reads
due to EOF.
* test-suite/tests/filesys.test ("sendfile"): Use 'let*' to guarantee
the needed order of operations: write (test-file) and then read it.
Add code to check the written data (not just the returned length) in
all tests, including the cases that hit EOF prematurely.
* libguile/filesys.c (scm_sendfile)[HAVE_SYS_SENDFILE_H &&
HAVE_SENDFILE]: Compare RESULT with C_COUNT. Loop until C_COUNT bytes
have been sent.
* doc/ref/posix.texi (File System): Update the description. Explain the
new semantics.
* test-suite/tests/filesys.test ("sendfile"): Rewrite using
`pass-if-equal'. Check the return value for all the tests.
["file with offset past the end", "file with offset near the end"]:
New tests.
* doc/ref/api-evaluation.texi (Character Encoding of Source Files):
Mention UTF-8 as another common encoding used for Scheme source files,
and that it is used by default. Change the description to leave open
the possibility of adding additional heuristics in the future.
Mention that if the coding declaration is in a #!-style block comment,
it must be the first such comment in the file. Mention the
'#:guess-encoding' keyword argument.