diff options
| author | Paul Eggert | 2011-03-29 17:39:12 -0700 |
|---|---|---|
| committer | Paul Eggert | 2011-03-29 17:39:12 -0700 |
| commit | 77861b9528e3fbb5f406267ff298a95009530b7f (patch) | |
| tree | d7eb3886831322f956d997d7bd10d034dfca5839 /src/alloc.c | |
| parent | d806ab682a8e914345db3f2eede292f85745c98c (diff) | |
| parent | de6dbc14a72347f3f2a3b4f0bf3c39d6f69a425e (diff) | |
| download | emacs-77861b9528e3fbb5f406267ff298a95009530b7f.tar.gz emacs-77861b9528e3fbb5f406267ff298a95009530b7f.zip | |
Fix more problems found by GCC 4.6.0's static checks.
Diffstat (limited to 'src/alloc.c')
| -rw-r--r-- | src/alloc.c | 47 |
1 files changed, 27 insertions, 20 deletions
diff --git a/src/alloc.c b/src/alloc.c index 66695e7a9bc..177a2266fb6 100644 --- a/src/alloc.c +++ b/src/alloc.c | |||
| @@ -254,8 +254,10 @@ const char *pending_malloc_warning; | |||
| 254 | 254 | ||
| 255 | /* Buffer in which we save a copy of the C stack at each GC. */ | 255 | /* Buffer in which we save a copy of the C stack at each GC. */ |
| 256 | 256 | ||
| 257 | #if MAX_SAVE_STACK > 0 | ||
| 257 | static char *stack_copy; | 258 | static char *stack_copy; |
| 258 | static int stack_copy_size; | 259 | static size_t stack_copy_size; |
| 260 | #endif | ||
| 259 | 261 | ||
| 260 | /* Non-zero means ignore malloc warnings. Set during initialization. | 262 | /* Non-zero means ignore malloc warnings. Set during initialization. |
| 261 | Currently not used. */ | 263 | Currently not used. */ |
| @@ -2705,7 +2707,7 @@ DEFUN ("list", Flist, Slist, 0, MANY, 0, | |||
| 2705 | doc: /* Return a newly created list with specified arguments as elements. | 2707 | doc: /* Return a newly created list with specified arguments as elements. |
| 2706 | Any number of arguments, even zero arguments, are allowed. | 2708 | Any number of arguments, even zero arguments, are allowed. |
| 2707 | usage: (list &rest OBJECTS) */) | 2709 | usage: (list &rest OBJECTS) */) |
| 2708 | (int nargs, register Lisp_Object *args) | 2710 | (size_t nargs, register Lisp_Object *args) |
| 2709 | { | 2711 | { |
| 2710 | register Lisp_Object val; | 2712 | register Lisp_Object val; |
| 2711 | val = Qnil; | 2713 | val = Qnil; |
| @@ -2921,10 +2923,10 @@ DEFUN ("vector", Fvector, Svector, 0, MANY, 0, | |||
| 2921 | doc: /* Return a newly created vector with specified arguments as elements. | 2923 | doc: /* Return a newly created vector with specified arguments as elements. |
| 2922 | Any number of arguments, even zero arguments, are allowed. | 2924 | Any number of arguments, even zero arguments, are allowed. |
| 2923 | usage: (vector &rest OBJECTS) */) | 2925 | usage: (vector &rest OBJECTS) */) |
| 2924 | (register int nargs, Lisp_Object *args) | 2926 | (register size_t nargs, Lisp_Object *args) |
| 2925 | { | 2927 | { |
| 2926 | register Lisp_Object len, val; | 2928 | register Lisp_Object len, val; |
| 2927 | register int i; | 2929 | register size_t i; |
| 2928 | register struct Lisp_Vector *p; | 2930 | register struct Lisp_Vector *p; |
| 2929 | 2931 | ||
| 2930 | XSETFASTINT (len, nargs); | 2932 | XSETFASTINT (len, nargs); |
| @@ -2943,10 +2945,10 @@ stack size, (optional) doc string, and (optional) interactive spec. | |||
| 2943 | The first four arguments are required; at most six have any | 2945 | The first four arguments are required; at most six have any |
| 2944 | significance. | 2946 | significance. |
| 2945 | usage: (make-byte-code ARGLIST BYTE-CODE CONSTANTS DEPTH &optional DOCSTRING INTERACTIVE-SPEC &rest ELEMENTS) */) | 2947 | usage: (make-byte-code ARGLIST BYTE-CODE CONSTANTS DEPTH &optional DOCSTRING INTERACTIVE-SPEC &rest ELEMENTS) */) |
| 2946 | (register int nargs, Lisp_Object *args) | 2948 | (register size_t nargs, Lisp_Object *args) |
| 2947 | { | 2949 | { |
| 2948 | register Lisp_Object len, val; | 2950 | register Lisp_Object len, val; |
| 2949 | register int i; | 2951 | register size_t i; |
| 2950 | register struct Lisp_Vector *p; | 2952 | register struct Lisp_Vector *p; |
| 2951 | 2953 | ||
| 2952 | XSETFASTINT (len, nargs); | 2954 | XSETFASTINT (len, nargs); |
| @@ -4228,7 +4230,7 @@ static void | |||
| 4228 | check_gcpros (void) | 4230 | check_gcpros (void) |
| 4229 | { | 4231 | { |
| 4230 | struct gcpro *p; | 4232 | struct gcpro *p; |
| 4231 | int i; | 4233 | size_t i; |
| 4232 | 4234 | ||
| 4233 | for (p = gcprolist; p; p = p->next) | 4235 | for (p = gcprolist; p; p = p->next) |
| 4234 | for (i = 0; i < p->nvars; ++i) | 4236 | for (i = 0; i < p->nvars; ++i) |
| @@ -4837,7 +4839,7 @@ returns nil, because real GC can't be done. */) | |||
| 4837 | { | 4839 | { |
| 4838 | register struct specbinding *bind; | 4840 | register struct specbinding *bind; |
| 4839 | char stack_top_variable; | 4841 | char stack_top_variable; |
| 4840 | register int i; | 4842 | register size_t i; |
| 4841 | int message_p; | 4843 | int message_p; |
| 4842 | Lisp_Object total[8]; | 4844 | Lisp_Object total[8]; |
| 4843 | int count = SPECPDL_INDEX (); | 4845 | int count = SPECPDL_INDEX (); |
| @@ -4903,21 +4905,26 @@ returns nil, because real GC can't be done. */) | |||
| 4903 | #if MAX_SAVE_STACK > 0 | 4905 | #if MAX_SAVE_STACK > 0 |
| 4904 | if (NILP (Vpurify_flag)) | 4906 | if (NILP (Vpurify_flag)) |
| 4905 | { | 4907 | { |
| 4906 | i = &stack_top_variable - stack_bottom; | 4908 | char *stack; |
| 4907 | if (i < 0) i = -i; | 4909 | size_t stack_size; |
| 4908 | if (i < MAX_SAVE_STACK) | 4910 | if (&stack_top_variable < stack_bottom) |
| 4909 | { | 4911 | { |
| 4910 | if (stack_copy == 0) | 4912 | stack = &stack_top_variable; |
| 4911 | stack_copy = (char *) xmalloc (stack_copy_size = i); | 4913 | stack_size = stack_bottom - &stack_top_variable; |
| 4912 | else if (stack_copy_size < i) | 4914 | } |
| 4913 | stack_copy = (char *) xrealloc (stack_copy, (stack_copy_size = i)); | 4915 | else |
| 4914 | if (stack_copy) | 4916 | { |
| 4917 | stack = stack_bottom; | ||
| 4918 | stack_size = &stack_top_variable - stack_bottom; | ||
| 4919 | } | ||
| 4920 | if (stack_size <= MAX_SAVE_STACK) | ||
| 4921 | { | ||
| 4922 | if (stack_copy_size < stack_size) | ||
| 4915 | { | 4923 | { |
| 4916 | if ((EMACS_INT) (&stack_top_variable - stack_bottom) > 0) | 4924 | stack_copy = (char *) xrealloc (stack_copy, stack_size); |
| 4917 | memcpy (stack_copy, stack_bottom, i); | 4925 | stack_copy_size = stack_size; |
| 4918 | else | ||
| 4919 | memcpy (stack_copy, &stack_top_variable, i); | ||
| 4920 | } | 4926 | } |
| 4927 | memcpy (stack_copy, stack, stack_size); | ||
| 4921 | } | 4928 | } |
| 4922 | } | 4929 | } |
| 4923 | #endif /* MAX_SAVE_STACK > 0 */ | 4930 | #endif /* MAX_SAVE_STACK > 0 */ |