Embeddable Common-Lisp main repository.
Find a file
Daniel Kochmański 43fef5fad8 streams: address a possible segfault in sequence streams
Byte streams transcoding to :ucs-2 and :ucs-4 don't call ecl_set_stream_elt_type
effectively not initializing .byte_buffer.  Moreover functions seq_in_read_byte8
and seq_out_write_byte8 assume the vector type to be an octet based, and they
increment the stream position and test for its limit according to that.

That means that ecl_binary_read_byte and ecl_binary_write_byte calls would
segfault when seq_in_read_byte8 and seq_out_write_byte8 are called.

Both conditions could be easily mitigated by initializing .byte_buffer manually
and fixing seq_*_*_byte8 functions to account for the byte size, but there is no
need for that, because for these streams we are not using

ecl_binary_*_byte
ecl_eformat_*_byte

so byte8 functions are not called and .byte_buffer is not used.
2025-08-11 10:01:40 +02:00
contrib Small compatibility fixes 2024-10-07 07:42:22 +02:00
examples Update asdf_with_dependence example readme 2023-07-09 18:04:35 +00:00
msvc streams: add binary encoders and decoders to the mix 2025-08-11 10:01:40 +02:00
src streams: address a possible segfault in sequence streams 2025-08-11 10:01:40 +02:00
.gitignore .gitignore: add the directory /local as ignored 2023-05-22 10:16:39 +02:00
.gitlab-ci.yml Update gitlab-ci to run pipeline less frequently (2) 2025-07-26 16:59:24 +02:00
appveyor.yml Add simple appveyor msvc build 2017-05-13 00:12:13 +02:00
CHANGELOG ecl_init_module: rebind *readtable* and *package* to protect the env 2025-07-17 16:02:18 +02:00
configure Preserve quoting when passing the arguments to the build directory 2008-08-27 09:50:44 +02:00
COPYING cleanup: update license to lgpl-2.1+ in both headers and text 2024-01-14 12:22:27 +01:00
INSTALL INSTALL: update the version of te tested emsdk version to 4.0.12 2025-08-04 10:06:31 +02:00
LICENSE cleanup: update license to lgpl-2.1+ in both headers and text 2024-01-14 12:22:27 +01:00
Makefile.in Makefile: allow both install and flatinstall targets 2024-02-24 22:30:16 +01:00
README.md update readme (typos) 2015-08-31 08:22:52 +00:00

ECL stands for Embeddable Common-Lisp. The ECL project aims to produce an implementation of the Common-Lisp language which complies to the ANSI X3J13 definition of the language.

The term embeddable refers to the fact that ECL includes a Lisp to C compiler, which produces libraries (static or dynamic) that can be called from C programs. Furthermore, ECL can produce standalone executables from Lisp code and can itself be linked to your programs as a shared library. It also features an interpreter for situations when a C compiler isn't available.

ECL supports the operating systems Linux, FreeBSD, NetBSD, DragonFly BSD, OpenBSD, Solaris (at least v. 9), Microsoft Windows (MSVC, MinGW and Cygwin) and OSX, running on top of the Intel, Sparc, Alpha, ARM and PowerPC processors. Porting to other architectures should be rather easy.