summaryrefslogtreecommitdiffstats
path: root/struct.c
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2020-04-13 19:24:31 -0700
committerKaz Kylheku <kaz@kylheku.com>2020-04-13 19:24:31 -0700
commitb95fa78d3bf572b190cb26bfc73a35d28a30d0dd (patch)
treeaa73bedc8fe8ac0417de536bedfe28647a6c96cc /struct.c
parenta9e4ee0f8d63dbdae72cdfa31ef16276ed251060 (diff)
downloadtxr-b95fa78d3bf572b190cb26bfc73a35d28a30d0dd.tar.gz
txr-b95fa78d3bf572b190cb26bfc73a35d28a30d0dd.tar.bz2
txr-b95fa78d3bf572b190cb26bfc73a35d28a30d0dd.zip
bugfix: definitions must trigger autoload.
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.
Diffstat (limited to 'struct.c')
-rw-r--r--struct.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/struct.c b/struct.c
index a00345fa..ccdb939f 100644
--- a/struct.c
+++ b/struct.c
@@ -352,6 +352,8 @@ val make_struct_type(val name, val supers,
val self = lit("make-struct-type");
val iter;
+ lisplib_try_load(name);
+
if (!listp(supers))
supers = cons(supers, nil);