aboutsummaryrefslogtreecommitdiffstats
path: root/src/alloc.c
diff options
context:
space:
mode:
authorPaul Eggert2011-03-29 17:39:12 -0700
committerPaul Eggert2011-03-29 17:39:12 -0700
commit77861b9528e3fbb5f406267ff298a95009530b7f (patch)
treed7eb3886831322f956d997d7bd10d034dfca5839 /src/alloc.c
parentd806ab682a8e914345db3f2eede292f85745c98c (diff)
parentde6dbc14a72347f3f2a3b4f0bf3c39d6f69a425e (diff)
downloademacs-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.c47
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
257static char *stack_copy; 258static char *stack_copy;
258static int stack_copy_size; 259static 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.
2706Any number of arguments, even zero arguments, are allowed. 2708Any number of arguments, even zero arguments, are allowed.
2707usage: (list &rest OBJECTS) */) 2709usage: (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.
2922Any number of arguments, even zero arguments, are allowed. 2924Any number of arguments, even zero arguments, are allowed.
2923usage: (vector &rest OBJECTS) */) 2925usage: (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.
2943The first four arguments are required; at most six have any 2945The first four arguments are required; at most six have any
2944significance. 2946significance.
2945usage: (make-byte-code ARGLIST BYTE-CODE CONSTANTS DEPTH &optional DOCSTRING INTERACTIVE-SPEC &rest ELEMENTS) */) 2947usage: (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
4228check_gcpros (void) 4230check_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 */