From 413d18e73de161f0618926ef73d170a7ef5c7a2f Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Wed, 22 Sep 2010 12:03:34 -0400 Subject: Fix some uses of int instead of EMACS_INT. minibuf.c (Fminibuffer_contents) (Fminibuffer_contents_no_properties) (Fminibuffer_completion_contents): Use EMACS_INT for minibuffer positions. keyboard.c (command_loop_1): Use EMACS_INT to compare point with mark. alloc.c (make_uninit_string, make_uninit_multibyte_string) (allocate_string_data): Accept EMACS_INT for string length. editfns.c (Ffield_string, Ffield_string_no_properties) (make_buffer_string, make_buffer_string_both, Fbuffer_substring) (Fbuffer_substring_no_properties, find_field, Fdelete_field) (Ffield_string, Ffield_string_no_properties, Ffield_beginning) (Ffield_end): Use EMACS_INT for buffer positions. insdel.c (prepare_to_modify_buffer): Use EMACS_INT to compare point with mark. lisp.h (allocate_string_data, make_uninit_string) (make_uninit_multibyte_string, make_buffer_string) (make_buffer_string_both): Adjust prototypes. --- src/alloc.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'src/alloc.c') diff --git a/src/alloc.c b/src/alloc.c index 1f615a7d505..60b8016fb88 100644 --- a/src/alloc.c +++ b/src/alloc.c @@ -1908,7 +1908,8 @@ allocate_string (void) S->data if it was initially non-null. */ void -allocate_string_data (struct Lisp_String *s, int nchars, int nbytes) +allocate_string_data (struct Lisp_String *s, + EMACS_INT nchars, EMACS_INT nbytes) { struct sdata *data, *old_data; struct sblock *b; @@ -2412,7 +2413,7 @@ build_string (const char *str) occupying LENGTH bytes. */ Lisp_Object -make_uninit_string (int length) +make_uninit_string (EMACS_INT length) { Lisp_Object val; @@ -2428,7 +2429,7 @@ make_uninit_string (int length) which occupy NBYTES bytes. */ Lisp_Object -make_uninit_multibyte_string (int nchars, int nbytes) +make_uninit_multibyte_string (EMACS_INT nchars, EMACS_INT nbytes) { Lisp_Object string; struct Lisp_String *s; -- cgit v1.2.1 From 141624691330c7622d9a31d53ec919dee8e97473 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Thu, 23 Sep 2010 08:09:12 -0400 Subject: Fix some more uses of int instead of EMACS_INT. font.c (font_intern_prop): Use EMACS_INT for string length variables. character.c (parse_str_as_multibyte, str_as_multibyte) (parse_str_to_multibyte, str_to_multibyte, str_as_unibyte) (string_count_byte8, string_escape_byte8): Use EMACS_INT for string length arguments, variables, and return values. character.h (parse_str_as_multibyte, str_as_multibyte) (parse_str_to_multibyte, str_to_multibyte, str_as_unibyte): Adjust prototypes. fns.c (Fstring_as_multibyte): Use EMACS_INT for string length variables. alloc.c : Declare as EMACS_INT, not int. (Fmake_string): Protect against too large strings. (live_string_p, live_cons_p, live_symbol_p, live_float_p) (live_misc_p): Use ptrdiff_t instead of int for pointer differences. (string_bytes, check_sblock, check_string_free_list) (allocate_string_data, compact_small_strings, Fmake_string) (Fmake_bool_vector, make_string, make_unibyte_string) (make_multibyte_string, make_string_from_bytes) (make_specified_string_string, Fmake_list, Fmake_vector): Use EMACS_INT for string length variables and arguments. (find_string_data_in_pure, make_pure_string, make_pure_c_string) (Fpurecopy): Use EMACS_INT for string size. (mark_vectorlike, mark_char_table, mark_object): Use EMACS_UINT for vector size. lisp.h (make_string, make_unibyte_string, make_multibyte_string) (make_string_from_bytes, make_specified_string_string) (make_pure_string, string_bytes): Adjust prototypes. --- src/alloc.c | 85 ++++++++++++++++++++++++++++++++++--------------------------- 1 file changed, 48 insertions(+), 37 deletions(-) (limited to 'src/alloc.c') diff --git a/src/alloc.c b/src/alloc.c index 60b8016fb88..5cbc7cfe411 100644 --- a/src/alloc.c +++ b/src/alloc.c @@ -1644,7 +1644,7 @@ static int total_strings, total_free_strings; /* Number of bytes used by live strings. */ -static int total_string_size; +static EMACS_INT total_string_size; /* Given a pointer to a Lisp_String S which is on the free-list string_free_list, return a pointer to its successor in the @@ -1739,11 +1739,12 @@ static void check_sblock (struct sblock *); /* Like GC_STRING_BYTES, but with debugging check. */ -int -string_bytes (s) - struct Lisp_String *s; +EMACS_INT +string_bytes (struct Lisp_String *s) { - int nbytes = (s->size_byte < 0 ? s->size & ~ARRAY_MARK_FLAG : s->size_byte); + EMACS_INT nbytes = + (s->size_byte < 0 ? s->size & ~ARRAY_MARK_FLAG : s->size_byte); + if (!PURE_POINTER_P (s) && s->data && nbytes != SDATA_NBYTES (SDATA_OF_STRING (s))) @@ -1765,7 +1766,7 @@ check_sblock (b) { /* Compute the next FROM here because copying below may overwrite data we need to compute it. */ - int nbytes; + EMACS_INT nbytes; /* Check that the string size recorded in the string is the same as the one recorded in the sdata structure. */ @@ -1825,7 +1826,7 @@ check_string_free_list () s = string_free_list; while (s != NULL) { - if ((unsigned)s < 1024) + if ((unsigned long)s < 1024) abort(); s = NEXT_FREE_LISP_STRING (s); } @@ -1913,7 +1914,7 @@ allocate_string_data (struct Lisp_String *s, { struct sdata *data, *old_data; struct sblock *b; - int needed, old_nbytes; + EMACS_INT needed, old_nbytes; /* Determine the number of bytes needed to store NBYTES bytes of string data. */ @@ -2155,7 +2156,7 @@ compact_small_strings (void) { /* Compute the next FROM here because copying below may overwrite data we need to compute it. */ - int nbytes; + EMACS_INT nbytes; #ifdef GC_CHECK_STRING_BYTES /* Check that the string size recorded in the string is the @@ -2233,7 +2234,8 @@ INIT must be an integer that represents a character. */) { register Lisp_Object val; register unsigned char *p, *end; - int c, nbytes; + int c; + EMACS_INT nbytes; CHECK_NATNUM (length); CHECK_NUMBER (init); @@ -2252,9 +2254,12 @@ INIT must be an integer that represents a character. */) { unsigned char str[MAX_MULTIBYTE_LENGTH]; int len = CHAR_STRING (c, str); + EMACS_INT string_len = XINT (length); - nbytes = len * XINT (length); - val = make_uninit_multibyte_string (XINT (length), nbytes); + if (string_len > MOST_POSITIVE_FIXNUM / len) + error ("Maximum string size exceeded"); + nbytes = len * string_len; + val = make_uninit_multibyte_string (string_len, nbytes); p = SDATA (val); end = p + nbytes; while (p != end) @@ -2277,7 +2282,8 @@ LENGTH must be a number. INIT matters only in whether it is t or nil. */) register Lisp_Object val; struct Lisp_Bool_Vector *p; int real_init, i; - int length_in_chars, length_in_elts, bits_per_value; + EMACS_INT length_in_chars, length_in_elts; + int bits_per_value; CHECK_NATNUM (length); @@ -2317,10 +2323,10 @@ LENGTH must be a number. INIT matters only in whether it is t or nil. */) multibyte, depending on the contents. */ Lisp_Object -make_string (const char *contents, int nbytes) +make_string (const char *contents, EMACS_INT nbytes) { register Lisp_Object val; - int nchars, multibyte_nbytes; + EMACS_INT nchars, multibyte_nbytes; parse_str_as_multibyte (contents, nbytes, &nchars, &multibyte_nbytes); if (nbytes == nchars || nbytes != multibyte_nbytes) @@ -2336,7 +2342,7 @@ make_string (const char *contents, int nbytes) /* Make an unibyte string from LENGTH bytes at CONTENTS. */ Lisp_Object -make_unibyte_string (const char *contents, int length) +make_unibyte_string (const char *contents, EMACS_INT length) { register Lisp_Object val; val = make_uninit_string (length); @@ -2350,7 +2356,8 @@ make_unibyte_string (const char *contents, int length) bytes at CONTENTS. */ Lisp_Object -make_multibyte_string (const char *contents, int nchars, int nbytes) +make_multibyte_string (const char *contents, + EMACS_INT nchars, EMACS_INT nbytes) { register Lisp_Object val; val = make_uninit_multibyte_string (nchars, nbytes); @@ -2363,7 +2370,8 @@ make_multibyte_string (const char *contents, int nchars, int nbytes) CONTENTS. It is a multibyte string if NBYTES != NCHARS. */ Lisp_Object -make_string_from_bytes (const char *contents, int nchars, int nbytes) +make_string_from_bytes (const char *contents, + EMACS_INT nchars, EMACS_INT nbytes) { register Lisp_Object val; val = make_uninit_multibyte_string (nchars, nbytes); @@ -2380,7 +2388,8 @@ make_string_from_bytes (const char *contents, int nchars, int nbytes) characters by itself. */ Lisp_Object -make_specified_string (const char *contents, int nchars, int nbytes, int multibyte) +make_specified_string (const char *contents, + EMACS_INT nchars, EMACS_INT nbytes, int multibyte) { register Lisp_Object val; @@ -2768,7 +2777,7 @@ DEFUN ("make-list", Fmake_list, Smake_list, 2, 2, 0, (register Lisp_Object length, Lisp_Object init) { register Lisp_Object val; - register int size; + register EMACS_INT size; CHECK_NATNUM (length); size = XFASTINT (length); @@ -2946,7 +2955,7 @@ See also the function `vector'. */) { Lisp_Object vector; register EMACS_INT sizei; - register int index; + register EMACS_INT index; register struct Lisp_Vector *p; CHECK_NATNUM (length); @@ -3786,7 +3795,7 @@ live_string_p (struct mem_node *m, void *p) if (m->type == MEM_TYPE_STRING) { struct string_block *b = (struct string_block *) m->start; - int offset = (char *) p - (char *) &b->strings[0]; + ptrdiff_t offset = (char *) p - (char *) &b->strings[0]; /* P must point to the start of a Lisp_String structure, and it must not be on the free-list. */ @@ -3809,7 +3818,7 @@ live_cons_p (struct mem_node *m, void *p) if (m->type == MEM_TYPE_CONS) { struct cons_block *b = (struct cons_block *) m->start; - int offset = (char *) p - (char *) &b->conses[0]; + ptrdiff_t offset = (char *) p - (char *) &b->conses[0]; /* P must point to the start of a Lisp_Cons, not be one of the unused cells in the current cons block, @@ -3835,7 +3844,7 @@ live_symbol_p (struct mem_node *m, void *p) if (m->type == MEM_TYPE_SYMBOL) { struct symbol_block *b = (struct symbol_block *) m->start; - int offset = (char *) p - (char *) &b->symbols[0]; + ptrdiff_t offset = (char *) p - (char *) &b->symbols[0]; /* P must point to the start of a Lisp_Symbol, not be one of the unused cells in the current symbol block, @@ -3861,7 +3870,7 @@ live_float_p (struct mem_node *m, void *p) if (m->type == MEM_TYPE_FLOAT) { struct float_block *b = (struct float_block *) m->start; - int offset = (char *) p - (char *) &b->floats[0]; + ptrdiff_t offset = (char *) p - (char *) &b->floats[0]; /* P must point to the start of a Lisp_Float and not be one of the unused cells in the current float block. */ @@ -3885,7 +3894,7 @@ live_misc_p (struct mem_node *m, void *p) if (m->type == MEM_TYPE_MISC) { struct marker_block *b = (struct marker_block *) m->start; - int offset = (char *) p - (char *) &b->markers[0]; + ptrdiff_t offset = (char *) p - (char *) &b->markers[0]; /* P must point to the start of a Lisp_Misc, not be one of the unused cells in the current misc block, @@ -4592,9 +4601,10 @@ check_pure_size (void) address. Return NULL if not found. */ static char * -find_string_data_in_pure (const char *data, int nbytes) +find_string_data_in_pure (const char *data, EMACS_INT nbytes) { - int i, skip, bm_skip[256], last_char_skip, infinity, start, start_max; + int i; + EMACS_INT skip, bm_skip[256], last_char_skip, infinity, start, start_max; const unsigned char *p; char *non_lisp_beg; @@ -4661,7 +4671,8 @@ find_string_data_in_pure (const char *data, int nbytes) string; then the string is not protected from gc. */ Lisp_Object -make_pure_string (const char *data, int nchars, int nbytes, int multibyte) +make_pure_string (const char *data, + EMACS_INT nchars, EMACS_INT nbytes, int multibyte) { Lisp_Object string; struct Lisp_String *s; @@ -4689,7 +4700,7 @@ make_pure_c_string (const char *data) { Lisp_Object string; struct Lisp_String *s; - int nchars = strlen (data); + EMACS_INT nchars = strlen (data); s = (struct Lisp_String *) pure_alloc (sizeof *s, Lisp_String); s->size = nchars; @@ -4779,7 +4790,7 @@ Does not copy symbols. Copies strings without text properties. */) else if (COMPILEDP (obj) || VECTORP (obj)) { register struct Lisp_Vector *vec; - register int i; + register EMACS_INT i; EMACS_INT size; size = XVECTOR (obj)->size; @@ -5228,8 +5239,8 @@ static int mark_object_loop_halt; static void mark_vectorlike (struct Lisp_Vector *ptr) { - register EMACS_INT size = ptr->size; - register int i; + register EMACS_UINT size = ptr->size; + register EMACS_UINT i; eassert (!VECTOR_MARKED_P (ptr)); VECTOR_MARK (ptr); /* Else mark it */ @@ -5251,8 +5262,8 @@ mark_vectorlike (struct Lisp_Vector *ptr) static void mark_char_table (struct Lisp_Vector *ptr) { - register EMACS_INT size = ptr->size & PSEUDOVECTOR_SIZE_MASK; - register int i; + register EMACS_UINT size = ptr->size & PSEUDOVECTOR_SIZE_MASK; + register EMACS_UINT i; eassert (!VECTOR_MARKED_P (ptr)); VECTOR_MARK (ptr); @@ -5381,8 +5392,8 @@ mark_object (Lisp_Object arg) recursion there. */ { register struct Lisp_Vector *ptr = XVECTOR (obj); - register EMACS_INT size = ptr->size; - register int i; + register EMACS_UINT size = ptr->size; + register EMACS_UINT i; CHECK_LIVE (live_vector_p); VECTOR_MARK (ptr); /* Else mark it */ -- cgit v1.2.1 From a3d5088daa2e78d9dc2d7eddc4ac9c56cfe11caa Mon Sep 17 00:00:00 2001 From: Dan Nicolaescu Date: Sun, 3 Oct 2010 08:19:34 -0700 Subject: Include unconditionally. * src/termcap.c: * src/sysdep.c: * src/lread.c: * src/keyboard.c: * src/filelock.c: * src/fileio.c: * src/doc.c: * src/callproc.c: * src/alloc.c: Remove include guards for , process.c already does it. --- src/alloc.c | 3 --- 1 file changed, 3 deletions(-) (limited to 'src/alloc.c') diff --git a/src/alloc.c b/src/alloc.c index 5cbc7cfe411..0ab4f9f8f85 100644 --- a/src/alloc.c +++ b/src/alloc.c @@ -65,15 +65,12 @@ along with GNU Emacs. If not, see . */ extern POINTER_TYPE *sbrk (); #endif -#ifdef HAVE_FCNTL_H #include -#endif #ifndef O_WRONLY #define O_WRONLY 1 #endif #ifdef WINDOWSNT -#include #include "w32.h" #endif -- cgit v1.2.1 From 3e6ae1a4ae2f54ad70a528ee3d4fac992b964eaa Mon Sep 17 00:00:00 2001 From: Dan Nicolaescu Date: Mon, 4 Oct 2010 10:22:57 -0700 Subject: Remove O_RDONLY, O_WRONLY definitions, not needed. * src/unexcoff.c: * src/lread.c: * src/fileio.c: * src/doc.c: * src/callproc.c: * src/alloc.c: * src/termcap.c: Remove O_RDONLY O_WRONLY definitions. --- src/alloc.c | 3 --- 1 file changed, 3 deletions(-) (limited to 'src/alloc.c') diff --git a/src/alloc.c b/src/alloc.c index 0ab4f9f8f85..fa39c1ee5dc 100644 --- a/src/alloc.c +++ b/src/alloc.c @@ -66,9 +66,6 @@ extern POINTER_TYPE *sbrk (); #endif #include -#ifndef O_WRONLY -#define O_WRONLY 1 -#endif #ifdef WINDOWSNT #include "w32.h" -- cgit v1.2.1