diff options
| author | Paul Eggert | 2017-05-06 14:21:19 -0700 |
|---|---|---|
| committer | Paul Eggert | 2017-05-06 14:25:13 -0700 |
| commit | 0a13c725132ade2709da217cac70e3847a387c58 (patch) | |
| tree | c7e756621c54a8a149e6ef871358fe24d75d201b /src | |
| parent | cea3b22bc742699d60c33194b73b391c05a2456d (diff) | |
| download | emacs-0a13c725132ade2709da217cac70e3847a387c58.tar.gz emacs-0a13c725132ade2709da217cac70e3847a387c58.zip | |
Pacify GCC setjmp/longjmp warning
* src/eval.c (internal_lisp_condition_case): Do not modify local
var VAR, to pacify GCC’s setjmp/longjmp warning which in some
cases mistakenly diagnoses VAR possibly being modified between a
setjmp and a longjmp.
Diffstat (limited to 'src')
| -rw-r--r-- | src/eval.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/src/eval.c b/src/eval.c index 0030271c533..848955c2794 100644 --- a/src/eval.c +++ b/src/eval.c | |||
| @@ -1277,18 +1277,19 @@ internal_lisp_condition_case (Lisp_Object var, Lisp_Object bodyform, | |||
| 1277 | if (NILP (var)) | 1277 | if (NILP (var)) |
| 1278 | return Fprogn (handler_body); | 1278 | return Fprogn (handler_body); |
| 1279 | 1279 | ||
| 1280 | Lisp_Object handler_var = var; | ||
| 1280 | if (!NILP (Vinternal_interpreter_environment)) | 1281 | if (!NILP (Vinternal_interpreter_environment)) |
| 1281 | { | 1282 | { |
| 1282 | val = Fcons (Fcons (var, val), | 1283 | val = Fcons (Fcons (var, val), |
| 1283 | Vinternal_interpreter_environment); | 1284 | Vinternal_interpreter_environment); |
| 1284 | var = Qinternal_interpreter_environment; | 1285 | handler_var = Qinternal_interpreter_environment; |
| 1285 | } | 1286 | } |
| 1286 | 1287 | ||
| 1287 | /* Bind VAR to VAL while evaluating HANDLER_BODY. The | 1288 | /* Bind HANDLER_VAR to VAL while evaluating HANDLER_BODY. |
| 1288 | unbind_to just undoes VAR's binding; whoever longjumped | 1289 | The unbind_to undoes just this binding; whoever longjumped |
| 1289 | to us unwound the stack to C->pdlcount before throwing. */ | 1290 | to us unwound the stack to C->pdlcount before throwing. */ |
| 1290 | ptrdiff_t count = SPECPDL_INDEX (); | 1291 | ptrdiff_t count = SPECPDL_INDEX (); |
| 1291 | specbind (var, val); | 1292 | specbind (handler_var, val); |
| 1292 | return unbind_to (count, Fprogn (handler_body)); | 1293 | return unbind_to (count, Fprogn (handler_body)); |
| 1293 | } | 1294 | } |
| 1294 | } | 1295 | } |