# HG changeset patch # User Stefan Monnier # Date 1006817388 0 # Node ID b28d5d866500ee6cb092a7719dc55e6fe4a3ffce # Parent 3c035e37d086b6ff5bbc1bdfa4976c96902474db Use AREF and ASIZE. (Ffetch_bytecode): Add the file name to the error message. diff -r 3c035e37d086 -r b28d5d866500 src/eval.c --- a/src/eval.c Mon Nov 26 23:03:47 2001 +0000 +++ b/src/eval.c Mon Nov 26 23:29:48 2001 +0000 @@ -1780,7 +1780,7 @@ have an element whose index is COMPILED_INTERACTIVE, which is where the interactive spec is stored. */ else if (COMPILEDP (fun)) - return ((XVECTOR (fun)->size & PSEUDOVECTOR_SIZE_MASK) > COMPILED_INTERACTIVE + return ((ASIZE (fun) & PSEUDOVECTOR_SIZE_MASK) > COMPILED_INTERACTIVE ? Qt : Qnil); /* Strings and vectors are keyboard macros. */ @@ -2857,7 +2857,7 @@ return Fsignal (Qinvalid_function, Fcons (fun, Qnil)); } else if (COMPILEDP (fun)) - syms_left = XVECTOR (fun)->contents[COMPILED_ARGLIST]; + syms_left = AREF (fun, COMPILED_ARGLIST); else abort (); @@ -2900,11 +2900,11 @@ { /* 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])) + if (CONSP (AREF (fun, COMPILED_BYTECODE))) Ffetch_bytecode (fun); - val = Fbyte_code (XVECTOR (fun)->contents[COMPILED_BYTECODE], - XVECTOR (fun)->contents[COMPILED_CONSTANTS], - XVECTOR (fun)->contents[COMPILED_STACK_DEPTH]); + val = Fbyte_code (AREF (fun, COMPILED_BYTECODE), + AREF (fun, COMPILED_CONSTANTS), + AREF (fun, COMPILED_STACK_DEPTH)); } return unbind_to (count, val); @@ -2918,14 +2918,19 @@ { Lisp_Object tem; - if (COMPILEDP (object) - && CONSP (XVECTOR (object)->contents[COMPILED_BYTECODE])) + if (COMPILEDP (object) && CONSP (AREF (object, COMPILED_BYTECODE))) { - tem = read_doc_string (XVECTOR (object)->contents[COMPILED_BYTECODE]); + tem = read_doc_string (AREF (object, COMPILED_BYTECODE)); if (!CONSP (tem)) - error ("invalid byte code"); - XVECTOR (object)->contents[COMPILED_BYTECODE] = XCAR (tem); - XVECTOR (object)->contents[COMPILED_CONSTANTS] = XCDR (tem); + { + tem = AREF (object, COMPILED_BYTECODE); + if (CONSP (tem) && STRINGP (XCAR (tem))) + error ("Invalid byte code in %s", XSTRING (XCAR (tem))->data); + else + error ("Invalid byte code"); + } + AREF (object, COMPILED_BYTECODE) = XCAR (tem); + AREF (object, COMPILED_CONSTANTS) = XCDR (tem); } return object; }