diff options
Diffstat (limited to 'src/lisp.h')
| -rw-r--r-- | src/lisp.h | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/src/lisp.h b/src/lisp.h index ac7346c5386..1ff8f83270b 100644 --- a/src/lisp.h +++ b/src/lisp.h | |||
| @@ -1413,15 +1413,21 @@ struct Lisp_Save_Value | |||
| 1413 | } data[4]; | 1413 | } data[4]; |
| 1414 | }; | 1414 | }; |
| 1415 | 1415 | ||
| 1416 | /* Compatibility macro to set and extract saved pointer. */ | 1416 | /* Macro to set and extract Nth saved pointer. Type |
| 1417 | checking is ugly because it's used as an lvalue. */ | ||
| 1417 | 1418 | ||
| 1418 | #define XSAVE_POINTER(obj) XSAVE_VALUE (obj)->data[0].pointer | 1419 | #define XSAVE_POINTER(obj, n) \ |
| 1420 | XSAVE_VALUE (obj)->data[(eassert (XSAVE_VALUE (obj)->type \ | ||
| 1421 | ## n == SAVE_POINTER), n)].pointer | ||
| 1419 | 1422 | ||
| 1420 | /* Likewise for the saved integer. */ | 1423 | /* Likewise for the saved integer. */ |
| 1421 | 1424 | ||
| 1422 | #define XSAVE_INTEGER(obj) XSAVE_VALUE (obj)->data[1].integer | 1425 | #define XSAVE_INTEGER(obj, n) \ |
| 1426 | XSAVE_VALUE (obj)->data[(eassert (XSAVE_VALUE (obj)->type \ | ||
| 1427 | ## n == SAVE_INTEGER), n)].integer | ||
| 1423 | 1428 | ||
| 1424 | /* Macro to extract Nth saved object. */ | 1429 | /* Macro to extract Nth saved object. This is never used as |
| 1430 | an lvalue, so we can do more convenient type checking. */ | ||
| 1425 | 1431 | ||
| 1426 | #define XSAVE_OBJECT(obj, n) \ | 1432 | #define XSAVE_OBJECT(obj, n) \ |
| 1427 | (eassert (XSAVE_VALUE (obj)->type ## n == SAVE_OBJECT), \ | 1433 | (eassert (XSAVE_VALUE (obj)->type ## n == SAVE_OBJECT), \ |