comparison src/bytecode.c @ 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 5cec7ab01719
children 2264738f7ae4
comparison
equal deleted inserted replaced
1629:632411c376d0 1630:6c996a26d761
538 { 538 {
539 Lisp_Object symbol = constants_data[n]; 539 Lisp_Object symbol = constants_data[n];
540 Lisp_Symbol *symbol_ptr = XSYMBOL (symbol); 540 Lisp_Symbol *symbol_ptr = XSYMBOL (symbol);
541 Lisp_Object old_value = symbol_ptr->value; 541 Lisp_Object old_value = symbol_ptr->value;
542 Lisp_Object new_value = POP; 542 Lisp_Object new_value = POP;
543 if (!SYMBOL_VALUE_MAGIC_P (old_value) || UNBOUNDP (old_value)) 543 if (SYMBOL_VALUE_MAGIC_P (old_value) &&
544 (XSYMBOL_VALUE_MAGIC_TYPE (old_value) == SYMVAL_BUFFER_LOCAL ||
545 XSYMBOL_VALUE_MAGIC_TYPE (old_value) ==
546 SYMVAL_SOME_BUFFER_LOCAL) &&
547 NILP (Fdefault_boundp (symbol)))
548 Fset_default (symbol, new_value);
549 else if (!SYMBOL_VALUE_MAGIC_P (old_value) || UNBOUNDP (old_value))
544 symbol_ptr->value = new_value; 550 symbol_ptr->value = new_value;
545 else 551 else
546 Fset (symbol, new_value); 552 Fset (symbol, new_value);
547 break; 553 break;
548 } 554 }