summaryrefslogtreecommitdiff
path: root/src/eval.c
diff options
context:
space:
mode:
authorRichard M. Stallman <rms@gnu.org>1994-12-21 18:15:35 +0000
committerRichard M. Stallman <rms@gnu.org>1994-12-21 18:15:35 +0000
commit2b1e859d923fc559af2c9c5fa312b49f188bcaf9 (patch)
treee72b2fd4e09af1ab4d837b31231df06e4c8ef5a8 /src/eval.c
parentfd4e2181c9a2f7edb5e6f14e90b2593a307bb0f4 (diff)
downloademacs-2b1e859d923fc559af2c9c5fa312b49f188bcaf9.tar.gz
(Fdefvar): Fix minor error in previous change.
(funcall_lambda): Fetch bytecode and constants vector from file if nec.
Diffstat (limited to 'src/eval.c')
-rw-r--r--src/eval.c17
1 files changed, 14 insertions, 3 deletions
diff --git a/src/eval.c b/src/eval.c
index f5dd69ff057..c65744b9646 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -587,6 +587,7 @@ If INITVALUE is missing, SYMBOL's value is not set.")
tail = Fcdr (Fcdr (args));
if (!NILP (Fcar (tail)))
{
+ tem = Fcar (tail);
if (!NILP (Vpurify_flag))
tem = Fpurecopy (tem);
Fput (sym, Qvariable_documentation, tem);
@@ -2233,9 +2234,19 @@ funcall_lambda (fun, nargs, arg_vector)
if (CONSP (fun))
val = Fprogn (Fcdr (Fcdr (fun)));
else
- val = Fbyte_code (XVECTOR (fun)->contents[COMPILED_BYTECODE],
- XVECTOR (fun)->contents[COMPILED_CONSTANTS],
- XVECTOR (fun)->contents[COMPILED_STACK_DEPTH]);
+ {
+ /* If we have not actually read the bytecode string
+ and constants vector yet, fetch them from the file. */
+ if (CONSP (XVECTOR (fun)->contents[COMPILED_BYTECODE]))
+ {
+ tem = read_doc_string (XVECTOR (fun)->contents[COMPILED_BYTECODE]);
+ XVECTOR (fun)->contents[COMPILED_BYTECODE] = XCONS (tem)->car;
+ XVECTOR (fun)->contents[COMPILED_CONSTANTS] = XCONS (tem)->cdr;
+ }
+ val = Fbyte_code (XVECTOR (fun)->contents[COMPILED_BYTECODE],
+ XVECTOR (fun)->contents[COMPILED_CONSTANTS],
+ XVECTOR (fun)->contents[COMPILED_STACK_DEPTH]);
+ }
return unbind_to (count, val);
}