Don't convert function pointers to void * and back.
authorPaul Eggert <eggert@cs.ucla.edu>
Tue, 2 Jul 2013 03:41:16 +0000 (20:41 -0700)
committerPaul Eggert <eggert@cs.ucla.edu>
Tue, 2 Jul 2013 03:41:16 +0000 (20:41 -0700)
commit52a9bcae40a1c8536cf70cc4622a6877024e4b36
tree90f239c0a7f16286c3938b1e1f4c8b72ce56b1e9
parentbb70a65f1de65b5abf87c0b43d03e55ed6e579f6
Don't convert function pointers to void * and back.

It isn't portable C, and it's easy enough to avoid.
* alloc.c: Verify SAVE_FUNCPOINTER bits, too.
(make_save_value): Add support for SAVE_FUNCPOINTER.
* keymap.c (map_keymap_char_table_item, map_keymap_internal):
* print.c (print_object):
Distinguish function from object pointers.
* lisp.h (SAVE_FUNCPOINTER): New constant.
(SAVE_SLOT_BITS): Adjust to it.
(SAVE_TYPE_FUNCPTR_PTR_OBJ): New constant, replacing
SAVE_TYPE_PTR_PTR_OBJ.  Change the only use.
(voidfuncptr): New typedef.
(struct Lisp_Save_Value): New member data[0].funcpointer.
(XSAVE_FUNCPOINTER): New function.
src/ChangeLog
src/alloc.c
src/keymap.c
src/lisp.h
src/print.c