| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* configure: If we determine we are running on Bash, then do
not re-execute. If re-executing, then look for CONFIG_SHELL
first, which is an Autoconf convention that some distros rely
on. Include dash in the fallback shell list because dash works
fine. Include more places in which to look for bash and dash.
Uses of txr_shell must be quoted now because it could take on
the value of CONFIG_SHELL which we don't control.
Print a trace message about re-executing. Print the message
about which shell we are running on earlier, before
parsing the variables and printing the baner.
Since we might not re-execute any more, we might not know the
exact name of the shell we are running on. That is difficult
and hacky to obtain, so instead we print an alternative
message that we are running on the original shell.
(gen_config_make): Only generate the SHELL Makefile variable
if txr_shell is set. If whatever shell we were run with is
good enough for the configure script, it's good enough for
Makefile recipes. Likely, the configure script was executed
directly, so that /bin/sh is that default shell and that is
what GNU Make will use by default.
|
|
|
|
|
|
|
|
|
|
| |
* regex.c (L1_fill_range, L2_fill_range, L3_fill_range): Bug:
when the arguments ch0 and ch1 indicate that a block is to be
filled entirely, we assume that the pointer is either null
or else a pointer to an allocated block, either of which we can
free and replace with a -1 pointer to indicate a full block.
However the pointer may already be -1, in which case we
wrongly pass that to free(). We must check for it.
|
|
|
|
|
|
| |
* regex.c (create_wide_cs): Add some Emoji ranges from
Plane 1, loosely following the Unicode 13.0 data given
in https://en.wikipedia.org/wiki/Emoji.
|
|
|
|
|
|
| |
* regex.c (create_wide_cs): Extend over the entire
supplementary ideographic plane U+2XXXX and
the tertiary one: U+3XXXX.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Updating the regex for matching code points corresponding to
wide and full width characters, with regard to the old
1998 document: http://www.unicode.org/reports/tr11-2/
More to follow.
I neglected to comment where the original data came from,
and neglected to comment it. In some cases it has more
coverage than the 1998 document; in some cases less.
* regex.c (create_wide_cs): Extending the 1100-115F range
to 11F9 to cover all of Korean Hangeul. Replace two
occurrences of 3000-303E with one 3000-303F.
Merge 3250-32FE with 3300-4DB5, and extend to 4DBF.
Add private use range E000-E757.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
With this patch, if open-file blocks (for instance on a FIFO
or device), it is interruptible. In the listener, the
operation can be aborted with Ctrl-C now.
* stream.c (w_fopen_mode): If we HAVE_FCNTL, then handle all
file opening via open + fdopen, rather than fopen. On
platforms where we use fopen, interruptibility won't work.
The fopen function cannot be abandoned via an exception thrown
from a signal handler because it performs memory allocation.
Because we need a temporary UTF-8 string to do the open,
which might be abandoned by a signal, let's move the string to
the stack via alloca, and free the original, so we don't have
to set up unwinding to free it.
|
|
|
|
|
|
|
|
|
| |
* lisplib.c (copy_file_set_entries): Register autoload for
touch.
* share/txr/stdlib/copy-file.tl (touch): New function.
* txr.1: Documented.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* stream.c (w_fopen_mode): Special handling via open and
fdopen is now required if either the m.notrunc or m.nonblock
is present. Since m.nonblock is just an option that can be
used with any open mode, we must handle the mode flags more
fully, to generate more possible combinations of open flags.
(do_parse_mode): Check for 'n', and set nonblock flag.
* stream.h (struct stdio_mode): New member, nonblock.
(stdio_moe_init_blank, stdio_mode_init_r,
stdio_mode_init_rpb): Update initalizers to set nonblock to
zero.
* txr.1: Documented, and also added missing i option to the
mode string syntax grammar summary.
|
|
|
|
|
|
|
|
|
| |
* stream.c (w_fopen_mode): When the "m" mode is present such
that we resort to a combination of POSIX open and fdopen,
we must use the 0666 mode for open, not 0777. This will
create a file with execute permissions, if the umask
doesn't block it. It went unnoticed because umask is
usually 022.
|
|
|
|
|
|
|
| |
* parser.c (txr_parse): The function must ensure that deferred
warnings are released, if it is not wrapped in a larger
translation unit. If *load-recursive* is false, we release the
warnings after the parser.
|
|
|
|
|
|
|
|
|
|
|
|
| |
* eval.c (load): When we parse TXR code, let's not release
warnings unconditionally. Let's do that when throwing an
exception though due to parse errors. If the load is not
recursed it will release warnings at the bottom of the
function.
* match.c (v_load): Consistently with load, release
deferred warnings if throwing exception due to the parse
having failed.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
We have a regression introduced in TXR 230, as part of the
bugfix for the extended_setjmp crash caused by PIE
executables.
This bug (for instance) causes signal handling to misbehave
after TXR handles a single asynchronous signal. In the REPL,
if the user interrupts a (usleep ...) operation with Ctrl-C,
it is afterward not possible to issue any more Ctrl-C
interrupts, asynchronous or not. The reason is that an
asynchronous interrupt directly throws an exception out of
the signal handler. Then the botched restoring of the signal
mask in extjmp_restore will install the wrong signal mask,
causing the signal to be blocked.
* unwind.c (extjmp_restore): Remove stray statement that
clobbers the saved mask of blocked signals. This was
accidentally been copy-and-pasted from extjmp_save.
|
|
|
|
|
|
|
|
|
|
|
|
| |
* socket.c (sock_load_init): Register documented but
completely missing intrinsic variables shut-rd, shut-wr,
shut-rdwr.
* lisplib.c (sock_set_entries): Register autoload for shut-rd,
shut-wr, shut-rdwr.
* txr.1: In sock-shutdown description, fix shut-rw typo that
should be shut-wr.
|
|
|
|
|
|
|
| |
* stream.c (stdio_maybe_error): We want to say "error
whatever-ing #<stream ....>": the action has to come first,
and from the format specifiers being ~a ~s, that was clearly
the intent.
|
|
|
|
|
|
| |
* socket.c (socketpair_wrap): Don't close descriptors
unconditionally in unwind case; only if the list to be
returned has not been created.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When a function, macro, variale, symbol macro or struct is
being defined, we must trigger any auto-load for that symbol.
If the definition is redefining a library symbol, then if
the autoload is later triggered, it will surprisingly
reinstate the library definition.
* eval.c (rt_defvarl, op_defsymacro, rt_defsymacro, rt_defun,
rt_defmacro): Insert calls to lisplib_try_load against the
symbol being defined.
* struct.c (make_struct_type): Likewise.
|
|
|
|
|
|
| |
* share/txr/stdlib/except.tl (ignwarn): Warnings have more
than one argument; the handling lambda must take variable
args.
|
|
|
|
|
|
|
|
|
|
| |
* RELNOTES: Updated.
* configure, txr.1: Bumped version and date.
* share/txr/stdlib/ver.tl: Likewise.
* txr.vim, tl.vim: Regenerated.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* match.c (mf_file_lazy): New static function. The
lazy list is created here and stored directly into
the data field of the context structure.
Function is marked NOINLINE because on an older
system with gcc 4.4.5, it didn't solve the problem.
We need the function to have a stack frame so any
spurious copies of the linked list go into a frame
that disappears when the function returns.
(v_next_impl): Use mf_file_lazy instead of mf_file_data.
(open_data_source): Also make this function INLINE
just in case because it contains calls to lazy_stream_cons.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Passing the match_files_ctx structure by value looks nice in
the code, but it is contributing to a long standing false
retention issue.
This test case runs in constant memory:
$ yes | txr -c '@(skip)
n'
skip scans through the lazy list of "y" lines
looking for an "n" that never comes.
This version should also run in constant memory,
but shows unbounded memory growth.
$ yes | txr -c '@(next *stdin*)
@(skip)
n'
This patch doesn't fix it, but it moves things in that
direction.
* match.c (mf_all, mf_args, mf_data, mf_spec,
mf_spec_bindings, mf_file_data, mf_from_ml): Take pointer to structure
which to initialize and return that pointer, instead of
initializing a local structure and returning it by value.
(match_files): Take pointer to context rather than copy.
(h_call, do_match_line, v_fuzz, v_block, v_next_impl,
v_parallel, v_gather, v_collect, v_bind, hv_trampoline,
v_try, v_fun, v_if, v_assesrt, v_load, v_call, match_filter,
match_fun, extract): Adjust to by-pointer context handling of
mf_all, match_files and other functions.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The algorithm for weak processing is not correct. In
hash_mark, we must must simply not mark any of the entries,
keys or values, of a weak table regardless of what type of
weak table it is. If we do that, we cause spurious retention
in situations that the keys and values have some kind of link
together other than through the table. For instance, suppose
keys are weak, but values happen to have references to keys.
If we mark the values, we mark the keys and nothing will
expire from the table.
Such a situation happens in stream_parser_hash, which
associates streams with parsers, and has weak keys. Parsers
have references to streams. So entries in the hash never
expire. Any stream that gets a parser is retained forever.
The weak hashes used for binding in eval.c (top_vb, ...) are
also affected, because the key is some symbol <sym> and the
value is (<sym> . <val>). The key is weak, but the value
references the sym. So these hashes also will not expire the
keys: unreachable variable bindings will stick around.
* hash.c (hash_mark): If a hash table has weak keys,
values, or both, then only mark its vector if the count is
zero. If it has one or more entries, we just add it to the
reachable_weak_hashes list to be processed in do_weak_tables.
|
|
|
|
|
|
|
|
| |
* gc.c (gc_wrap): Takes argument for requesting full garbage
collection.
(gc_late_init): Update registration of gc intrinsic.
* txr.1: Documented.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
As a final round of this recent work, we observe that
since the accumulator structure has been reduced to two
members, we can eliminate one of them by using a cons
cell as the accumulator, and threading the second value
through the cdr.
That is to say, the listacc grammar rule's semantic
value will now be the tail cons of the list being
constructed. The cdr of this cons will, temporarily,
be a back pointer to the head (making the list temporarily
circular).
The n_exprs reduction will fix this up; it will put the
correct terminating atom in place of the head (either nil,
or the dotted item if there is one), and yield the head as the
semantic value.
* lib.h (struct list_accum): Removed. (Thus, finding a better
home for this would, after all, have been a waste of time).
* parser.y (lacc, splacc): Static functions removed.
(union YYSTYPE): lacc membber removed.
(n_exprs): Adjust to new semantic value coming from listacc.
(listacc): Now of type val again. Yields pointer to tail cons
as semantic value, whose cdr points to the head of the
list.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* lib.h (struct list_accum): dot member removed.
* parser.y (misplaced_consing_dot_check): Function removed.
The misplaced consing dot diagnostic is still provided
as before by yybadtoken.
(n_exprs): Production for CONSDOT is moved here out of
listacc. There is no $1.dot member to deal with;
the dot is very simply handled here.
(listacc): Remove calls to misplaced_consing_dot_check.
CONSDOT production moved to n_exprs.
(lacc, splacc): Remove initialization of dot member.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The r_expr grammar symbol is replaced with listacc which has
a different type: a new Yacc node type that has three fields
for building a list from left to right without nreverse,
and the dotted pair item.
* lib.h (struct list_accum): New struct type. Not a great
place for it, but we don't have a parser-specific header that
is included before y.tab.h: parser.h is included after
y.tab.h.
* parser.y (misplaced_consing_dot_check): The val argument
is just the existing dotted item; if it is other than nao,
the error is generated.
(lacc, splacc): New static functions.
(YYSTYPE): New union member, lacc of type struct list_accum.
(r_exprs): Grammar symbol removed.
(listacc): New grammar symbol of type listacc. The rules are
those of r_exprs upgraded to construct the list in one pass.
|
|
|
|
| |
* txr.1: > should be >>.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
We test the .txr_history file for bad permissions also, not
only .txr_profile. Though commands are not automatically
executed out of .txr_history, a user could execute a harmful
command due to not noticing the malicious modification.
An additional useful diagnostic is added: if a dotfile is
found to have the wrong permission, it's possible that this is
due to a poor umask setting. We check for a weak umask and
warn the user.
Note: the .txr_history check doesn't use the open stream,
therefore it is vulnerable to TOCTTOU race condition:
the file looks good, but between the time we verify this
and open the file to load it, the file has been replaced
by a malicious one.
* parser.c (report_security_problem): New static function,
factored out of load_rcfile. Includes umask test.
(load_rcfile): Call report_security_problem if the
.txr_profile is writable to others. Also, no need to call stat
any more; the path testing function now takes a stream
argument.
(repl): Check .txr_history for inappropriate writepermissions
also and call report_security_problem if so.
* sysif.c (umask_wrap): Change static function to external
linkage.
* sysif.c (umask_wrap): Declaration updated.
|
|
|
|
|
|
|
| |
* share/txr/stdlib/path-test.tl (do-path-test): Check also
for the argument being a stream, and pass to statfun.
* txr.1: Documentation updated and improved.
|
|
|
|
|
| |
* tags.tl (process-clause): Symbols from @(bind) should be
recorded as variable tags, not function tags.
|
|
|
|
|
|
|
|
| |
* txr.1: The read and iread functions have an optional
parameter for overriding the starting line number. It is now
documented. read and lisp-parse got this parameter in 2015,
in TXR 123. iread was introduced with this parameter in
TXR 124.
|
|
|
|
|
| |
* txr.1: Replace "apperas to compiles" typo with better
wording.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When @(throw) generates a non-error exception that is
unhandled, we just want it to continue. In the same situation,
an @(assert) should behave as a failed match; that is, the
failure of the query material that follows the assert, which
activated it, should propagate through the assert.
* match.c (v_throw): Return next_spec_k if uw_rthrow
returns.
(v_assert, h_assert): Return nil if uw_rthrow returns.
* txr.1: Expanded @(throw) and @(assert) documentation with
discussion of unhandled exceptions.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* eval.c (eval_exception): This function is shared by warnings
and errors. Use uw_throw. The eval_error caller already has
an abort() after its eval_exception call, which makes that
code path continue to be equivalent to uw_throw. The behavior
changes for the other caller, eval_warn, which will now return
if the warning is not handled.
(eval_defr_warn, gather_free_refs, gather_free_refs_nw): Throw
non-error exception with uw_rthrow.
* match.c (v_throw, v_assert, h_assert): Use uw_rthrow for these
directives, just like the throw function.
* parser.c (repl_intr, repl_warning): Use uw_rthrow.
* unwind.c (uw_muffle_warning, uw_release_deferred_warnings):
Likewise.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is the eight and final round of an effort to enable
GCC's -Wextra option. The C++ compiler, with -Wextra,
doesn't like C's universal struct initializer { 0 },
individually complaining about all the remaining members
not being initialized. What works in C++ is the { }
initializer. Conditional definition to the rescue.
* lib.h (all_zero_init): New macro which expands to
{ } under C++, and { 0 } under C.
* lib.c (make_time_impl, epoch_tm, time_string_meth,
time_parse_meth): Use all_zero_init.
* parser.c (prime_parser): Likewise.
* socket.c (sock_mark_connected): Likewise.
* sysif.c (fcntl_wrap): Likewise.
* termios.c (encode_speeds, decode_speeds): Likewise.
* configure (diag_flags): Add -Wextra.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch makes a fundamental change in exception behavior.
Going forward, if an exception that is not derived from
error is not handled (no catch intercepts it, and no handler
accepts it) then the throw call simply returns nil to the
caller instead of unwinding and terminating the process.
For error exceptions, the behavior is the same: the
*uhandled-hook* is called, if it exists, and if it doesn't
exist or returns, unwinding and termination with diagnostics
ensues.
The rationale for not treating non-error exceptions fatally
is that this simplifies the use of code that throws exceptions
for non-error situations like progress updates. The code can
be used without the caller having to establish a handler.
* txr.1: Documentation updates and comaptibility notes.
* unwind.c (uw_rthrow): New returning throw function based on
the implementation of uw_throw.
(uw_rthrowv, uw_rthrowvf): New functions.
(uw_throw): Now a wrapper for uw_rthrow. Because uw_throw
still does not return, it calls abort if uw_rthrow
returns. uw_throw is used internally only for error
exceptions.
(uw_throwv, uw_throwfv): Functions removed.
(uw_late_init): Register throw and throwf to the
new functions uw_rthrowv an uw_rthrowfv.
* unwind.h (uw_rthrow, uw_rthrowv, uw_rthrowfv): Declared.
(uw_throwv, uw_throwfv): Declarations removed.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is the seventh round of an effort to enable GCC's -Wextra
option. Warnings about switch fallthrough situations are
addressed. GCC now has a diagnostic for this that is enabled
by -Wextra in such a way that if a fallthrough comment is
present, the diagnostic is suppressed. In much of the code,
we have such a comment. It's missing in a few places, or
misplaced. There are also some real bugs.
* hash.c (hash_buf): Add fallthrough comments to intentional
fallthrough cases.
(hash_hash_op): bugfix: add break statement. The 32 and 64
bit cases are independent (at compile time).
* lib.c (cdr, nullify, list_collect, empty): Add fallthrough
comment.
(int_str): Add missing break. This has not caused a
bug though because setting the octzero flag in the zerox
case is harmless to the logic which follows.
* linenoise.c (edit): Move misplaced fallthrough.
* sysif.c (fcntl_wrap): Bugfix: add missing break, without
which errno is tampered to hold EINVAL, in spite of a
successful F_SETLK, F_SETLKW or F_GETLK operation.
* unwind.h (jmp_restore): Declare noreturn, so that GCC
does not issue a false positive warning about a fallthrough
in uw_unwind_to_exit_point.
* utf8.c (utf8_from_buf, utf8_decode): Move a fallthrough
comment outside of preprocessing, so it is properly processed
by GCC's diagnostic.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is the sixth round of an effort to enable GCC's -Wextra
option. Warnings about uninitialized members are addressed.
I am not happy with what had to be done in linenoise.c.
We just need a dummy circular list node for the lino_list,
which we achieved with a dummy all zero struture, with
statially initialized next and prev pointers. There are way
too many members to initialize, including one that has struct
termios type containing a nonportable set of members.
On the plus size, the lino_list structure now moves into the
BSS section, reducing the executable size slightly.
* lib.c (cptr_ops): Initialize using cobj_ops_init, which has
all the initializers already, and should have been used for
this in the first place.
* linenoise/linenoise.c (lino_list): Remove initializer,
which eliminates the warning about some members not being
initialized.
(lino_init): Initialize the next and prev pointers here.
* parser.c (parser_ops): Initialize with cobj_ops_init.
* stream.h (stdio_mode_init_blank, stdio_mode_init_r,
stdio_mode_init_rpb): Add initializer corresponding to redir
array member of struct stdio_mode.
* sysif.c (cptr_dl_ops): Use cobj_ops_init.
* tree.c (tree_iter_init): Add initializer for the path
array member of struct tree_iter.
(tr_rebuild): Initialize all fields of the dummy object.
Since it's a union, we just have to deal with the any
member. There are two layouts for the obj_common fields
based on whether CONFIG_GEN_GC is enabled. This is ugly, but
occurs in one place only.
|
|
|
|
|
|
|
|
|
|
| |
This is the fifth round of an effort to enable GCC's -Wextra
option.
* signal.h (sig_save_enable, sig_save_disable): Fix the
compiler warning about do ; while (0) benefiting from
braces around the empty statement. I agree with this;
I was momentarily confused myself by that semicolon.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is the fourth round of an effort to enable GCC's -Wextra
option. Instances of code that test whether an unsigned
quantity is negative are repaired. Real bugs are found.
* itypes.c (c_u32, c_uint, c_ulong): Remove useless comparison
for < 0 that was copy-pasted from the signed cases.
* linenoise/linenoise.c (show_help, edit): Do not test the
return value of the getch_fn callback for negative. It returns
wint_t, which may be unsigned. Test for the WEOF value.
This is a bug because since the original comparison is
always false, the code fails to catch the WEOF return.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is the third round of an effort to enable GCC's -Wextra
option. Instances of signed/unsigned mismatch between
the branches of ternary conditionals are addressed.
* ffi.c (pad_retval): Add cast into the consequent of
the conditional so it yields size_t, like the alternative.
* lib.c (split_str_keep): Likewise.
(vector): Cast -1 to ucnum so it has the same type as the
alloc_plus opposite to it.
* parser.c (lino_getch): Add a cast to wint_t to match
return value and opposite WEOF operand.
* stream.c (generic_get_line): Likewise.
* sysif.c (c_time): Convert both consequent and alternative
to time_t to silence warning.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is the second round of an effort to enable GCC's -Wextra
option. All function parameters that are unused and
are removable are removed. They are eliminated from the
function defintions, declarations, callers, and any related
function pointer variables or structure members.
* arith.c (nary_simple_op): Remove unused self parameter.
See lib.c: maxv, minv.
* chksum.c (crc32_buf, crc32_str): Remove unused self
parameter.
(crc32): Don't pass self to the above functions.
* eval.c (copy_env_handler, copy_bh_env_handler): Remove
unused parent parameter. See unwind.c.
(supplement_op_syms): Remove unused max parameter.
(me_op): Don't pass max to supplement_op_syms.
* lib.c (seq_iter_rewind): Remove unused self parameter.
(lazy_flatten_func): Remove unused env parameter.
(lazy_flatten): Use func_n1 to create non-environment-carrying
funtion out of lazy_flatten_func.
(maxv, minv): Don't pass self parameter to nary_simple_op.
(middle_pivot): Remove unused lessfun param.
(quicksort): Don't pass lessfun to middle_pivot.
(diff, isec): Don't pass self to seq_iter_rewind.
* lib.h (seq_iter_rewind, nary_simple_op): Declarations
updated.
* struct.c (get_super_slots): Remove unused self parameteer.
(make_struct_type): Don't pass self to get_super_slots.
* sysif.c (flock_unpack): Remove unused self parameter.
(fcntl_wrap): Don't pass self to flock_unpack.
* unwind.c (uw_push_cont_copy): Remove parent parameter from
function pointer parameter. See eval.c: copy_env_handler.
(call_copy_handlers): Remove parent parameter and don't
pass that argument to the indirect call via pointer
to the copy handler function.
(revive_cont, capture_cont): Don't pass 0 value to
removed parent parameter of call_copy_handlers.
* unwind.h (struct uw_cont_copy): Function pointer member copy
loses parent parameter.
(uw_push_cont_copy): Declaration updated.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is the first round of an effort to enable GCC's -Wextra
option. All function parameters that are unused an that we
cannot eliminate are treated with a cast to void in the
function body.
* args.c (args_key_check_store): Cast unused param to void.
* combi.c (perm_list_gen_fill): Likewise.
* eval.c (op_error, op_meta_error, op_quote op_qquote_error,
op_unquote_error, op_load_time_lit, me_each, me_for,
me_quasilist, me_flet_labels, hash_min_max, me_ignerr,
me_whilet, me_iflet_whenlet, me_dotimes, me_mlet,
me_load_time, me_load_for): Likewise.
* ffi.c (ffi_void_put, ffi_fixed_dynsize, *ffi_fixed_alloc,
ffi_noop_free, ffi_void_get, ffi_simple_release, ffi_i8_put,
ffi_i8_get, ffi_u8_put, ffi_u8_get, ffi_i16_put, ffi_i16_get,
ffi_u16_put, ffi_u16_get, ffi_i32_put, ffi_i32_get,
ffi_u32_put, ffi_u32_get, ffi_i64_put, ffi_i64_get,
ffi_u64_put, ffi_u64_get, ffi_char_put, ffi_char_get,
ffi_uchar_put, ffi_uchar_get, ffi_bchar_get, ffi_short_put,
ffi_short_get, ffi_ushort_put, ffi_ushort_get, ffi_int_put,
ffi_int_get, ffi_uint_put, ffi_uint_get, ffi_long_put,
ffi_long_get, ffi_ulong_put, ffi_ulong_get, ffi_float_put,
ffi_float_get, ffi_double_put, ffi_double_get, ffi_val_put,
ffi_val_get, ffi_be_i16_put, ffi_be_i16_get, ffi_be_u16_put,
ffi_be_u16_get, ffi_le_i16_put, ffi_le_i16_get,
ffi_le_u16_put, ffi_le_u16_get, ffi_be_i32_put,
ffi_be_i32_get, ffi_be_u32_put, ffi_be_u32_get,
ffi_le_i32_put, ffi_le_i32_get, ffi_le_u32_put,
ffi_le_u32_get, ffi_be_i64_put, ffi_be_i64_get,
ffi_be_u64_put, ffi_be_u64_get, ffi_le_i64_put,
ffi_le_i64_get, ffi_le_u64_put, ffi_le_u64_get, ffi_wchar_put,
ffi_wchar_get, ffi_sbit_get, ffi_ubit_get, ffi_cptr_get,
ffi_str_in, ffi_str_put, ffi_str_get, ffi_str_d_get,
ffi_wstr_in, ffi_wstr_get, ffi_wstr_put, ffi_wstr_d_get,
ffi_bstr_in, ffi_bstr_put, ffi_bstr_get, ffi_bstr_d_get,
ffi_buf_in, ffi_buf_put, ffi_buf_get, ffi_buf_d_in,
ffi_buf_d_put, ffi_buf_d_get, ffi_closure_put, ffi_ptr_in_in,
ffi_ptr_in_d_in, ffi_ptr_in_out, ffi_ptr_out_in,
ffi_ptr_out_out, ffi_ptr_out_null_put, ffi_ptr_out_s_in,
ffi_flex_struct_in, ffi_carray_get, ffi_union_get,
make_ffi_type_builtin, make_ffi_type_array,
ffi_closure_dispatch, ffi_closure_dispatch_safe): Likewise.
* gc.c (cobj_destroy_stub_op, cobj_destroy_free_op, cobj_mark_op): Likewise.
* lib.c (seq_iter_get_nil, seq_iter_peek_nil): Likewise.
* linenoise/linenoise.c (sigwinch_handler): Likewise.
* parser.c (repl_intr, read_eval_ret_last, repl_warning,
is_balanced_line): Likewise.
* parser.y (yydebug_onoff): Likewise.
* socket.c (dgram_close): Likewise.
* stream.c (unimpl_put_string, unimpl_put_char,
unimpl_put_byte, unimpl_unget_char, unimpl_unget_byte,
unimpl_put_buf, unimpl_fill_buf, unimpl_seek, unimpl_truncate,
unimpl_set_sock_peer, null_put_string, null_put_char,
null_put_byte, null_get_line, null_get_char, null_get_byte,
null_close, null_flush, null_seek, null_set_prop,
null_get_error, null_get_error_str, null_clear_error,
null_get_fd, dir_close): Likewise.
* struct.c (struct_type_print): Likewise.
* unwind.c (me_defex): Likewise.
|
|
|
|
| |
* tags.tl (process-form): Handle top-level macro-time form.
|
|
|
|
|
|
| |
* tags.tl (process-form): Use mappend for the recursive
processing, not mapdo, and invoke pend on the result
to add it to the accumulated list.
|
|
|
|
|
|
| |
* tags.tl (process-package-influencing-form): When a load-for
is encountered, only descend into fake-load if the clause
kind is pkg, and the package doesn't exist.
|
|
|
|
|
|
|
| |
* tags.tl (in-anon-package): Take advantage of the system
function sys:make-anon-package which is used in the
file compiler, instead of creating a package named "anon"
which could plausibly clash with an existing package.
|
|
|
|
|
|
|
|
| |
* tags.tl (in-anon-package): Instead of the unwind-protect
which deletes the anonymous package, let us save and restore
the *package-alist* by dynamically binding it to its current
value. This will roll back packages that were created by
fake-load.
|
|
|
|
|
|
|
|
|
|
|
|
| |
* tags.tl (*fake-load-path*): New special variable.
(process-package-influencing-form, fake-load): New functions.
(process-form): Pass each compound form to
process-package-influencing-form in case it might be a
defpackage or load.
(collect-tags-tl): Bind *fake-load-path* to the file's path
so fake-load will resolve relative paths relative to the
file's own directory, similarly to how load works with
*load-path*.
|
|
|
|
|
|
|
|
|
|
| |
Let's process each file in an anonymous package, saving and
restoring the *package* special. TXR files can mess with that
variable.
* tags.tl (in-anon-package): New macro.
(collect-tags-tl, collect-tags-txr): Wrap parsing with
in-anon-package macro.
|
|
|
|
|
| |
* tags.tl (process-clause): Bugfix: flatcar must be used, not
flatten, because the bindings can contain dotted notation.
|