diff options
Diffstat (limited to 'src/eval.c')
| -rw-r--r-- | src/eval.c | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/src/eval.c b/src/eval.c index 7f5f58a2e81..74ebb0c90b6 100644 --- a/src/eval.c +++ b/src/eval.c | |||
| @@ -3263,7 +3263,6 @@ void | |||
| 3263 | specbind (symbol, value) | 3263 | specbind (symbol, value) |
| 3264 | Lisp_Object symbol, value; | 3264 | Lisp_Object symbol, value; |
| 3265 | { | 3265 | { |
| 3266 | Lisp_Object ovalue; | ||
| 3267 | Lisp_Object valcontents; | 3266 | Lisp_Object valcontents; |
| 3268 | 3267 | ||
| 3269 | CHECK_SYMBOL (symbol); | 3268 | CHECK_SYMBOL (symbol); |
| @@ -3283,9 +3282,7 @@ specbind (symbol, value) | |||
| 3283 | } | 3282 | } |
| 3284 | else | 3283 | else |
| 3285 | { | 3284 | { |
| 3286 | Lisp_Object valcontents; | 3285 | Lisp_Object ovalue = find_symbol_value (symbol); |
| 3287 | |||
| 3288 | ovalue = find_symbol_value (symbol); | ||
| 3289 | specpdl_ptr->func = 0; | 3286 | specpdl_ptr->func = 0; |
| 3290 | specpdl_ptr->old_value = ovalue; | 3287 | specpdl_ptr->old_value = ovalue; |
| 3291 | 3288 | ||
| @@ -3330,10 +3327,14 @@ specbind (symbol, value) | |||
| 3330 | specpdl_ptr->symbol = symbol; | 3327 | specpdl_ptr->symbol = symbol; |
| 3331 | 3328 | ||
| 3332 | specpdl_ptr++; | 3329 | specpdl_ptr++; |
| 3333 | if (BUFFER_OBJFWDP (ovalue) || KBOARD_OBJFWDP (ovalue)) | 3330 | /* We used to do |
| 3334 | store_symval_forwarding (symbol, ovalue, value, NULL); | 3331 | if (BUFFER_OBJFWDP (ovalue) || KBOARD_OBJFWDP (ovalue)) |
| 3335 | else | 3332 | store_symval_forwarding (symbol, ovalue, value, NULL); |
| 3336 | set_internal (symbol, value, 0, 1); | 3333 | else |
| 3334 | but ovalue comes from find_symbol_value which should never return | ||
| 3335 | such an internal value. */ | ||
| 3336 | eassert (!(BUFFER_OBJFWDP (ovalue) || KBOARD_OBJFWDP (ovalue))); | ||
| 3337 | set_internal (symbol, value, 0, 1); | ||
| 3337 | } | 3338 | } |
| 3338 | } | 3339 | } |
| 3339 | 3340 | ||