diff options
Diffstat (limited to 'src/bytecode.c')
| -rw-r--r-- | src/bytecode.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/src/bytecode.c b/src/bytecode.c index e95614c72a9..c59f75dc78e 100644 --- a/src/bytecode.c +++ b/src/bytecode.c | |||
| @@ -505,8 +505,9 @@ If the third argument is incorrect, Emacs may crash. */) | |||
| 505 | v1 = vectorp[op]; | 505 | v1 = vectorp[op]; |
| 506 | if (SYMBOLP (v1)) | 506 | if (SYMBOLP (v1)) |
| 507 | { | 507 | { |
| 508 | v2 = SYMBOL_VALUE (v1); | 508 | if (XSYMBOL (v1)->redirect != SYMBOL_PLAINVAL |
| 509 | if (MISCP (v2) || EQ (v2, Qunbound)) | 509 | || (v2 = SYMBOL_VAL (XSYMBOL (v1)), |
| 510 | EQ (v2, Qunbound))) | ||
| 510 | { | 511 | { |
| 511 | BEFORE_POTENTIAL_GC (); | 512 | BEFORE_POTENTIAL_GC (); |
| 512 | v2 = Fsymbol_value (v1); | 513 | v2 = Fsymbol_value (v1); |
| @@ -597,10 +598,9 @@ If the third argument is incorrect, Emacs may crash. */) | |||
| 597 | /* Inline the most common case. */ | 598 | /* Inline the most common case. */ |
| 598 | if (SYMBOLP (sym) | 599 | if (SYMBOLP (sym) |
| 599 | && !EQ (val, Qunbound) | 600 | && !EQ (val, Qunbound) |
| 600 | && !XSYMBOL (sym)->indirect_variable | 601 | && !XSYMBOL (sym)->redirect |
| 601 | && !SYMBOL_CONSTANT_P (sym) | 602 | && !SYMBOL_CONSTANT_P (sym)) |
| 602 | && !MISCP (XSYMBOL (sym)->value)) | 603 | XSYMBOL (sym)->val.value = val; |
| 603 | XSYMBOL (sym)->value = val; | ||
| 604 | else | 604 | else |
| 605 | { | 605 | { |
| 606 | BEFORE_POTENTIAL_GC (); | 606 | BEFORE_POTENTIAL_GC (); |