Mercurial > hg > xemacs-beta
changeset 1630:6c996a26d761
[xemacs-hg @ 2003-08-18 20:30:49 by james]
Fix edebug problem caused by making a variable buffer-local before the defvar.
author | james |
---|---|
date | Mon, 18 Aug 2003 20:30:51 +0000 |
parents | 632411c376d0 |
children | 1bf7b032a45d |
files | src/ChangeLog src/bytecode.c |
diffstat | 2 files changed, 12 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/src/ChangeLog Mon Aug 18 19:51:18 2003 +0000 +++ b/src/ChangeLog Mon Aug 18 20:30:51 2003 +0000 @@ -1,3 +1,8 @@ +2003-08-18 Jerry James <james@xemacs.org> + + * bytecode.c (execute_optimized_program): Setting a buffer-local + variable with no default binding sets the default. + 2003-08-18 Jerry James <james@xemacs.org> * opaque.h: Remove unused (X)OPAQUE_MARKFUN definitions.
--- a/src/bytecode.c Mon Aug 18 19:51:18 2003 +0000 +++ b/src/bytecode.c Mon Aug 18 20:30:51 2003 +0000 @@ -540,7 +540,13 @@ Lisp_Symbol *symbol_ptr = XSYMBOL (symbol); Lisp_Object old_value = symbol_ptr->value; Lisp_Object new_value = POP; - if (!SYMBOL_VALUE_MAGIC_P (old_value) || UNBOUNDP (old_value)) + if (SYMBOL_VALUE_MAGIC_P (old_value) && + (XSYMBOL_VALUE_MAGIC_TYPE (old_value) == SYMVAL_BUFFER_LOCAL || + XSYMBOL_VALUE_MAGIC_TYPE (old_value) == + SYMVAL_SOME_BUFFER_LOCAL) && + NILP (Fdefault_boundp (symbol))) + Fset_default (symbol, new_value); + else if (!SYMBOL_VALUE_MAGIC_P (old_value) || UNBOUNDP (old_value)) symbol_ptr->value = new_value; else Fset (symbol, new_value);