- ...
- }
-
- If yon need to pass more than just one C pointer, you should
- use make_save_value. This function allows you to pack up to
- SAVE_VALUE_SLOTS integers, pointers or Lisp_Objects and
- conveniently get them back with XSAVE_POINTER, XSAVE_INTEGER and
- XSAVE_OBJECT macros:
-
- ...
- struct my_data *md = get_my_data ();
- Lisp_Object my_object = get_my_object ();
- record_unwind_protect
- (my_unwind, make_save_value (SAVE_TYPE_PTR_OBJ, md, my_object));
- ...
-
- Lisp_Object my_unwind (Lisp_Object arg)
- {
- struct my_data *md = XSAVE_POINTER (arg, 0);
- Lisp_Object my_object = XSAVE_OBJECT (arg, 1);