diff options
| author | Paul Eggert | 2011-06-14 11:57:19 -0700 |
|---|---|---|
| committer | Paul Eggert | 2011-06-14 11:57:19 -0700 |
| commit | f66c7cf8f794d6f7fd9ccb8794ffc519e4e89795 (patch) | |
| tree | 0de26b21c827049c7fa2485204ecf0e2d632b849 /src/ChangeLog | |
| parent | a1759b76246a21c7c07dc2ee00b8db792715104c (diff) | |
| download | emacs-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/ChangeLog')
| -rw-r--r-- | src/ChangeLog | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index e4e95ba5aa0..dc8f983c870 100644 --- a/src/ChangeLog +++ b/src/ChangeLog | |||
| @@ -1,5 +1,28 @@ | |||
| 1 | 2011-06-14 Paul Eggert <eggert@cs.ucla.edu> | 1 | 2011-06-14 Paul Eggert <eggert@cs.ucla.edu> |
| 2 | 2 | ||
| 3 | Variadic C functions now count arguments with ptrdiff_t. | ||
| 4 | This partly undoes my 2011-03-30 change, which replaced int with size_t. | ||
| 5 | Back then I didn't know that the Emacs coding style prefers signed int. | ||
| 6 | Also, in the meantime I found a few more instances where arguments | ||
| 7 | were being counted with int, which may be too narrow, or EMACS_INT, which | ||
| 8 | may be too wide. | ||
| 9 | * lisp.h (struct Lisp_Subr.function.aMANY) | ||
| 10 | (DEFUN_ARGS_MANY, internal_condition_case_n, safe_call): | ||
| 11 | Arg counts are now ptrdiff_t, not size_t. | ||
| 12 | All variadic functions and their callers changed accordingly. | ||
| 13 | (struct gcpro.nvars): Now size_t, not size_t. All uses changed. | ||
| 14 | * bytecode.c (exec_byte_code): Check maxdepth for overflow, | ||
| 15 | to avoid potential buffer overrun. Don't assume arg counts fit in 'int'. | ||
| 16 | * callint.c (Fcall_interactively): Check arg count for overflow, | ||
| 17 | to avoid potential buffer overrun. Use signed char, not 'int', | ||
| 18 | for 'varies' array, so that we needn't bother to check its size | ||
| 19 | calculation for overflow. | ||
| 20 | * editfns.c (Fformat): Use ptrdiff_t, not EMACS_INT, to count args. | ||
| 21 | * eval.c (apply_lambda): | ||
| 22 | * fns.c (Fmapconcat): Use XFASTINT, not XINT, to get args length. | ||
| 23 | (struct textprop_rec.argnum): Now ptrdiff_t, not int. All uses changed. | ||
| 24 | (mapconcat): Use ptrdiff_t, not int and EMACS_INT, to count args. | ||
| 25 | |||
| 3 | * callint.c (Fcall_interactively): Don't use index var as event count. | 26 | * callint.c (Fcall_interactively): Don't use index var as event count. |
| 4 | 27 | ||
| 5 | * vm-limit.c (check_memory_limits): Fix incorrect extern function decls. | 28 | * vm-limit.c (check_memory_limits): Fix incorrect extern function decls. |