Fix obscure porting bug with varargs functions.
authorPaul Eggert <eggert@cs.ucla.edu>
Fri, 19 Jul 2013 01:24:35 +0000 (18:24 -0700)
committerPaul Eggert <eggert@cs.ucla.edu>
Fri, 19 Jul 2013 01:24:35 +0000 (18:24 -0700)
commit1396ac86dea5fccab800e4b25fdb5319381891eb
tree7f89955a2ab13f3ef4a40f14a48bbcc293c3b179
parentc7064f05d3d660fbdd9e7a2feb0860b04f46ae0d
Fix obscure porting bug with varargs functions.

The code assumed that int is treated like ptrdiff_t in a vararg
function, which is not a portable assumption.  There was a similar
-- though these days less likely -- porting problem with various
assumptions that pointers of different types all smell the same as
far as vararg functions is conserved.  To make this problem less
likely in the future, redo the API to use varargs functions.
* alloc.c (make_save_value): Remove this vararg function.
All uses changed to ...
(make_save_int_int_int, make_save_obj_obj_obj_obj)
(make_save_ptr_int, make_save_funcptr_ptr_obj, make_save_memory):
New functions.
(make_save_ptr): Rename from make_save_pointer, for consistency with
the above.  Define only on platforms that need it.  All uses changed.
src/ChangeLog
src/alloc.c
src/editfns.c
src/fileio.c
src/font.c
src/ftfont.c
src/keymap.c
src/lisp.h
src/nsterm.m
src/w32fns.c
src/xmenu.c