aboutsummaryrefslogtreecommitdiffstats
path: root/src/font.c
diff options
context:
space:
mode:
authorPaul Eggert2011-06-14 11:57:19 -0700
committerPaul Eggert2011-06-14 11:57:19 -0700
commitf66c7cf8f794d6f7fd9ccb8794ffc519e4e89795 (patch)
tree0de26b21c827049c7fa2485204ecf0e2d632b849 /src/font.c
parenta1759b76246a21c7c07dc2ee00b8db792715104c (diff)
downloademacs-f66c7cf8f794d6f7fd9ccb8794ffc519e4e89795.tar.gz
emacs-f66c7cf8f794d6f7fd9ccb8794ffc519e4e89795.zip
Variadic C functions now count arguments with ptrdiff_t.
This partly undoes my 2011-03-30 change, which replaced int with size_t. Back then I didn't know that the Emacs coding style prefers signed int. Also, in the meantime I found a few more instances where arguments were being counted with int, which may truncate counts on 64-bit machines, or EMACS_INT, which may be unnecessarily wide. * lisp.h (struct Lisp_Subr.function.aMANY) (DEFUN_ARGS_MANY, internal_condition_case_n, safe_call): Arg counts are now ptrdiff_t, not size_t. All variadic functions and their callers changed accordingly. (struct gcpro.nvars): Now size_t, not size_t. All uses changed. * bytecode.c (exec_byte_code): Check maxdepth for overflow, to avoid potential buffer overrun. Don't assume arg counts fit in 'int'. * callint.c (Fcall_interactively): Check arg count for overflow, to avoid potential buffer overrun. Use signed char, not 'int', for 'varies' array, so that we needn't bother to check its size calculation for overflow. * editfns.c (Fformat): Use ptrdiff_t, not EMACS_INT, to count args. * eval.c (apply_lambda): * fns.c (Fmapconcat): Use XFASTINT, not XINT, to get args length. (struct textprop_rec.argnum): Now ptrdiff_t, not int. All uses changed. (mapconcat): Use ptrdiff_t, not int and EMACS_INT, to count args.
Diffstat (limited to 'src/font.c')
-rw-r--r--src/font.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/font.c b/src/font.c
index 326c9d80e44..ecb61ab6a53 100644
--- a/src/font.c
+++ b/src/font.c
@@ -3829,10 +3829,10 @@ be an OpenType font whose GPOS table of `thai' script's default
3829language system must contain `mark' feature. 3829language system must contain `mark' feature.
3830 3830
3831usage: (font-spec ARGS...) */) 3831usage: (font-spec ARGS...) */)
3832 (size_t nargs, Lisp_Object *args) 3832 (ptrdiff_t nargs, Lisp_Object *args)
3833{ 3833{
3834 Lisp_Object spec = font_make_spec (); 3834 Lisp_Object spec = font_make_spec ();
3835 size_t i; 3835 ptrdiff_t i;
3836 3836
3837 for (i = 0; i < nargs; i += 2) 3837 for (i = 0; i < nargs; i += 2)
3838 { 3838 {