diff --git a/src/builtin.cmod b/src/builtin.cmod index 47a6a2896e5af16f72b9e9a3ee298fd02c92a9b5..6fe4c49fe7dce845d11b7e5b0659edd15ec0ca92 100644 --- a/src/builtin.cmod +++ b/src/builtin.cmod @@ -102,12 +102,12 @@ PIKEFUN mapping(1:2) mkmapping(array(1=mixed) a, array(2=mixed) b) RETURN mkmapping(a,b); } -PIKEFUN int string_count(string haystack, string needle) +PIKEFUN ptrdiff_t string_count(string haystack, string needle) errname String.count; optflags OPT_TRY_OPTIMIZE; { - int c=0; - int i,j; + ptrdiff_t c = 0; + ptrdiff_t i, j; switch (needle->len) { diff --git a/src/queue.c b/src/queue.c index 41e62d27dcdf9822440c672febfbb200dda3f2c6..dc4d4c03c045c0c57d002953ae018cf04eed19e3 100644 --- a/src/queue.c +++ b/src/queue.c @@ -23,7 +23,7 @@ void run_queue(struct pike_queue *q) struct queue_block *b; #ifdef PIKE_DEBUG - if (q->first && q->last == (struct queue_block *) 1) + if (q->first && q->last == (struct queue_block *)(ptrdiff_t)1) fatal("This looks like a lifo queue.\n"); #endif @@ -60,7 +60,7 @@ void enqueue(struct pike_queue *q, queue_call call, void *data) #ifdef PIKE_DEBUG if (!q->first) q->last = 0; - else if (q->last == (struct queue_block *) 1) + else if (q->last == (struct queue_block *)(ptrdiff_t)1) fatal("This looks like a lifo queue.\n"); #endif @@ -89,7 +89,7 @@ void run_lifo_queue(struct pike_queue *q) struct queue_block *b; #ifdef PIKE_DEBUG - if (q->first && q->last != (struct queue_block *) 1) + if (q->first && q->last != (struct queue_block *)(ptrdiff_t)1) fatal("This does not look like a lifo queue.\n"); #endif @@ -112,8 +112,8 @@ void enqueue_lifo(struct pike_queue *q, queue_call call, void *data) struct queue_block *b=q->first; #ifdef PIKE_DEBUG - if (!q->first) q->last = (struct queue_block *) 1; - else if (q->last != (struct queue_block *) 1) + if (!q->first) q->last = (struct queue_block *)(ptrdiff_t)1; + else if (q->last != (struct queue_block *)(ptrdiff_t)1) fatal("This does not look like a lifo queue.\n"); #endif @@ -135,7 +135,7 @@ void *dequeue_lifo(struct pike_queue *q, queue_call call) struct queue_block *b; #ifdef PIKE_DEBUG - if (q->first && q->last != (struct queue_block *) 1) + if (q->first && q->last != (struct queue_block *)(ptrdiff_t)1) fatal("This does not look like a lifo queue.\n"); #endif diff --git a/src/stralloc.c b/src/stralloc.c index ec4bc4abeec0584ec6bc1186db770e5b1083037a..cfd1f6170cda2c2d050c34d3435e740b9a3735ca 100644 --- a/src/stralloc.c +++ b/src/stralloc.c @@ -25,7 +25,7 @@ #define HUGE HUGE_VAL #endif /*!HUGE*/ -RCSID("$Id: stralloc.c,v 1.94 2000/08/10 18:00:09 grubba Exp $"); +RCSID("$Id: stralloc.c,v 1.95 2000/08/10 18:23:17 grubba Exp $"); #define BEGIN_HASH_SIZE 997 #define MAX_AVG_LINK_LENGTH 3 @@ -39,7 +39,7 @@ static unsigned int need_more_hash_prefix=0; unsigned INT32 htable_size=0; static unsigned int hashprimes_entry=0; static struct pike_string **base_table=0; -static unsigned INT32 full_hash_value; +static size_t full_hash_value; unsigned INT32 num_strings=0; /*** Main string hash function ***/ @@ -47,13 +47,13 @@ unsigned INT32 num_strings=0; #define StrHash(s,len) low_do_hash(s,len,0) -static unsigned int low_do_hash(const void *s, ptrdiff_t len, int size_shift) +static size_t low_do_hash(const void *s, ptrdiff_t len, int size_shift) { full_hash_value=hashmem(s,len<<size_shift,HASH_PREFIX<<size_shift); return full_hash_value % htable_size; } -static INLINE unsigned int do_hash(struct pike_string *s) +static INLINE size_t do_hash(struct pike_string *s) { return low_do_hash(s->str, s->len, s->size_shift); } @@ -287,7 +287,7 @@ static int improper_zero_termination(struct pike_string *s) static struct pike_string *internal_findstring(const char *s, ptrdiff_t len, int size_shift, - int h) + ptrdiff_t h) { struct pike_string *curr,**prev, **base; #ifndef HASH_PREFIX @@ -323,7 +323,7 @@ static struct pike_string *internal_findstring(const char *s, } #ifndef HASH_PREFIX /* These heuruistics might require tuning! /Hubbe */ - if((depth > HASH_PREFIX) && (HASH_PREFIX < (unsigned int)len)) + if((depth > HASH_PREFIX) && (HASH_PREFIX < (size_t)len)) { need_more_hash_prefix++; /* fprintf(stderr,"depth=%d num_strings=%d need_more_hash_prefix=%d HASH_PREFIX=%d\n",depth,num_strings,need_more_hash_prefix,HASH_PREFIX); */ @@ -350,7 +350,7 @@ PMOD_EXPORT struct pike_string *findstring(const char *foo) * of that list in the hastable */ static struct pike_string *propagate_shared_string(const struct pike_string *s, - int h) + ptrdiff_t h) { struct pike_string *curr, **prev, **base; @@ -379,10 +379,10 @@ static struct pike_string *propagate_shared_string(const struct pike_string *s, static void rehash_string_backwards(struct pike_string *s) { - int h; + ptrdiff_t h; if(!s) return; rehash_string_backwards(s->next); - h=s->hval % htable_size; + h = s->hval % htable_size; s->next=base_table[h]; base_table[h]=s; } @@ -427,7 +427,7 @@ PMOD_EXPORT struct pike_string *debug_begin_shared_string(size_t len) return t; } -static void link_pike_string(struct pike_string *s, unsigned int h) +static void link_pike_string(struct pike_string *s, size_t h) { s->refs = 0; s->next = base_table[h]; @@ -467,7 +467,7 @@ static void link_pike_string(struct pike_string *s, unsigned int h) base_table[h2]=tmp2; } } - full_hash_value=save_full_hash_value; + full_hash_value = save_full_hash_value; } #endif } @@ -569,7 +569,7 @@ PMOD_EXPORT struct pike_string *end_shared_string(struct pike_string *s) PMOD_EXPORT struct pike_string * debug_make_shared_binary_string(const char *str,size_t len) { struct pike_string *s; - int h=StrHash(str,len); + ptrdiff_t h = StrHash(str, len); s = internal_findstring(str,len,0,h); if (!s) @@ -614,7 +614,7 @@ PMOD_EXPORT struct pike_string * debug_make_shared_binary_string0(const p_wchar0 PMOD_EXPORT struct pike_string * debug_make_shared_binary_string1(const p_wchar1 *str,size_t len) { struct pike_string *s; - int h; + ptrdiff_t h; if(!find_magnitude1(str,len)) { @@ -642,7 +642,7 @@ PMOD_EXPORT struct pike_string * debug_make_shared_binary_string1(const p_wchar1 PMOD_EXPORT struct pike_string * debug_make_shared_binary_string2(const p_wchar2 *str,size_t len) { struct pike_string *s; - int h; + ptrdiff_t h; switch(find_magnitude2(str,len)) { @@ -702,11 +702,11 @@ PMOD_EXPORT struct pike_string *debug_make_shared_string2(const p_wchar2 *str) PMOD_EXPORT void unlink_pike_string(struct pike_string *s) { - unsigned int h=s->hval % htable_size; + size_t h = s->hval % htable_size; propagate_shared_string(s,h); base_table[h]=s->next; #ifdef PIKE_DEBUG - s->next=(struct pike_string *)-1; + s->next=(struct pike_string *)(ptrdiff_t)-1; #endif num_strings--; } @@ -727,10 +727,10 @@ PMOD_EXPORT void really_free_string(struct pike_string *s) } if(d_flag > 2) { - if(s->next == (struct pike_string *)-1) + if(s->next == (struct pike_string *)(ptrdiff_t)-1) fatal("Freeing shared string again!\n"); - if(((long)s->next) & 1) + if(((ptrdiff_t)s->next) & 1) fatal("Freeing shared string again, memory corrupt or other bug!\n"); } } @@ -761,7 +761,7 @@ struct pike_string *add_string_status(int verbose) int allocd_bytes=0; int num_distinct_strings=0; int bytes_distinct_strings=0; - int overhead_bytes=0; + ptrdiff_t overhead_bytes = 0; unsigned INT32 e; struct pike_string *p; for(e=0;e<htable_size;e++) @@ -785,10 +785,11 @@ struct pike_string *add_string_status(int verbose) sprintf(b,"Strings malloced\t\t%8ld %8ld + %ld overhead\n", (long)num_distinct_strings, (long)bytes_distinct_strings, - (long)overhead_bytes); + DO_NOT_WARN((long)overhead_bytes)); my_strcat(b); - sprintf(b,"Space actually required/total string bytes %d%%\n", - (bytes_distinct_strings + overhead_bytes)*100 / allocd_bytes); + sprintf(b, "Space actually required/total string bytes %ld%%\n", + DO_NOT_WARN((long)((bytes_distinct_strings + overhead_bytes)*100 / + allocd_bytes))); my_strcat(b); } /* @@ -824,7 +825,7 @@ PMOD_EXPORT void check_string(struct pike_string *s) PMOD_EXPORT void verify_shared_strings_tables(void) { unsigned INT32 e, h, num=0; - unsigned INT32 orig_full_hash = full_hash_value; + size_t orig_full_hash = full_hash_value; struct pike_string *s; for(e=0;e<htable_size;e++) @@ -935,10 +936,10 @@ PMOD_EXPORT void debug_dump_pike_string(struct pike_string *s, INT32 max) fprintf(stderr,"0x%p: %ld refs, len=%ld, size_shift=%d, hval=%lux (%lx)\n", s, (long)s->refs, - (long)s->len, + DO_NOT_WARN((long)s->len), s->size_shift, - (unsigned long)s->hval, - (unsigned long)StrHash(s->str, s->len)); + DO_NOT_WARN((unsigned long)s->hval), + DO_NOT_WARN((unsigned long)StrHash(s->str, s->len))); fprintf(stderr," \""); for(e=0;e<s->len && max>0;e++) { @@ -982,8 +983,8 @@ void dump_stralloc_strings(void) /*** String compare functions ***/ /* does not take locale into account */ -PMOD_EXPORT int low_quick_binary_strcmp(char *a,INT32 alen, - char *b,INT32 blen) +PMOD_EXPORT int low_quick_binary_strcmp(char *a, ptrdiff_t alen, + char *b, ptrdiff_t blen) { int tmp; if(alen > blen) @@ -1002,8 +1003,10 @@ PMOD_EXPORT int low_quick_binary_strcmp(char *a,INT32 alen, /* does not take locale into account */ -PMOD_EXPORT int generic_quick_binary_strcmp(const char *a,INT32 alen, int asize, - const char *b,INT32 blen, int bsize) +PMOD_EXPORT ptrdiff_t generic_quick_binary_strcmp(const char *a, + ptrdiff_t alen, int asize, + const char *b, + ptrdiff_t blen, int bsize) { if(!asize && !bsize) { @@ -1039,8 +1042,8 @@ PMOD_EXPORT int c_compare_string(struct pike_string *s, char *foo, int len) #ifndef HAVE_STRCOLL /* No locale function available */ -int low_binary_strcmp(char *a,INT32 alen, - char *b,INT32 blen) +int low_binary_strcmp(char *a, ptrdiff_t alen, + char *b, ptrdiff_t blen) { low_quick_binary_strcmp(a,alen,b,blen); } @@ -1069,7 +1072,8 @@ static int low_binary_strcmp(char *a,INT32 alen, /* Does not take locale into account */ -PMOD_EXPORT int my_quick_strcmp(struct pike_string *a,struct pike_string *b) +PMOD_EXPORT ptrdiff_t my_quick_strcmp(struct pike_string *a, + struct pike_string *b) { if(a==b) return 0; @@ -1078,7 +1082,7 @@ PMOD_EXPORT int my_quick_strcmp(struct pike_string *a,struct pike_string *b) } /* Does take locale into account */ -PMOD_EXPORT int my_strcmp(struct pike_string *a,struct pike_string *b) +PMOD_EXPORT ptrdiff_t my_strcmp(struct pike_string *a,struct pike_string *b) { if(a==b) return 0; @@ -1089,7 +1093,7 @@ PMOD_EXPORT int my_strcmp(struct pike_string *a,struct pike_string *b) default: { - INT32 e,l=MINIMUM(a->len,b->len); + ptrdiff_t e, l = MINIMUM(a->len, b->len); for(e=0;e<l;e++) { INT32 ac=index_shared_string(a,e); @@ -1115,7 +1119,8 @@ PMOD_EXPORT int my_strcmp(struct pike_string *a,struct pike_string *b) } } -PMOD_EXPORT struct pike_string *realloc_unlinked_string(struct pike_string *a, INT32 size) +PMOD_EXPORT struct pike_string *realloc_unlinked_string(struct pike_string *a, + ptrdiff_t size) { struct pike_string *r; r=(struct pike_string *)realloc((char *)a, @@ -1135,7 +1140,8 @@ PMOD_EXPORT struct pike_string *realloc_unlinked_string(struct pike_string *a, I } /* Returns an unlinked string ready for end_shared_string */ -PMOD_EXPORT struct pike_string *realloc_shared_string(struct pike_string *a, INT32 size) +PMOD_EXPORT struct pike_string *realloc_shared_string(struct pike_string *a, + ptrdiff_t size) { struct pike_string *r; if(a->refs==1) @@ -1323,10 +1329,10 @@ PMOD_EXPORT struct pike_string *add_shared_strings(struct pike_string *a, PMOD_EXPORT struct pike_string *add_and_free_shared_strings(struct pike_string *a, struct pike_string *b) { - INT32 alen=a->len; + ptrdiff_t alen = a->len; if(a->size_shift == b->size_shift) { - a=realloc_shared_string(a,alen + b->len); + a = realloc_shared_string(a,alen + b->len); MEMCPY(a->str+(alen<<a->size_shift),b->str,b->len<<b->size_shift); free_string(b); return end_shared_string(a); @@ -1339,9 +1345,9 @@ PMOD_EXPORT struct pike_string *add_and_free_shared_strings(struct pike_string * } -PMOD_EXPORT int string_search(struct pike_string *haystack, - struct pike_string *needle, - int start) +PMOD_EXPORT ptrdiff_t string_search(struct pike_string *haystack, + struct pike_string *needle, + ptrdiff_t start) { struct generic_mem_searcher s; char *r; @@ -1633,10 +1639,10 @@ PMOD_EXPORT void *string_builder_allocate(struct string_builder *s, ptrdiff_t ch PMOD_EXPORT void string_builder_putchar(struct string_builder *s, int ch) { - INT32 i; + ptrdiff_t i; string_build_mkspace(s,1,min_magnitude(ch)); s->known_shift=MAXIMUM(min_magnitude(ch),s->known_shift); - i=s->s->len++; + i = s->s->len++; low_set_index(s->s,i,ch); } diff --git a/src/stralloc.h b/src/stralloc.h index b720db0a9e4ca2a5a3b958399c2a813bdc15d94d..432fb45b6797cfcbd023c0eed4a84aae67c20825 100644 --- a/src/stralloc.h +++ b/src/stralloc.h @@ -5,7 +5,7 @@ \*/ /* - * $Id: stralloc.h,v 1.53 2000/08/10 18:00:42 grubba Exp $ + * $Id: stralloc.h,v 1.54 2000/08/10 18:23:30 grubba Exp $ */ #ifndef STRALLOC_H #define STRALLOC_H @@ -192,19 +192,22 @@ PMOD_EXPORT int safe_debug_findstring(struct pike_string *foo); PMOD_EXPORT struct pike_string *debug_findstring(const struct pike_string *foo); PMOD_EXPORT void debug_dump_pike_string(struct pike_string *s, INT32 max); void dump_stralloc_strings(void); -PMOD_EXPORT int low_quick_binary_strcmp(char *a,INT32 alen, - char *b,INT32 blen); -PMOD_EXPORT int generic_quick_binary_strcmp(const char *a,INT32 alen, int asize, - const char *b,INT32 blen, int bsize); +PMOD_EXPORT int low_quick_binary_strcmp(char *a, ptrdiff_t alen, + char *b, ptrdiff_t blen); +PMOD_EXPORT ptrdiff_t generic_quick_binary_strcmp(const char *a, + ptrdiff_t alen, int asize, + const char *b, + ptrdiff_t blen, int bsize); PMOD_EXPORT int c_compare_string(struct pike_string *s, char *foo, int len); -PMOD_EXPORT static int low_binary_strcmp(char *a,INT32 alen, - char *b,INT32 blen); -PMOD_EXPORT static int low_binary_strcmp(char *a,INT32 alen, - char *b,INT32 blen); -PMOD_EXPORT int my_quick_strcmp(struct pike_string *a,struct pike_string *b); -PMOD_EXPORT int my_strcmp(struct pike_string *a,struct pike_string *b); -PMOD_EXPORT struct pike_string *realloc_unlinked_string(struct pike_string *a, INT32 size); -PMOD_EXPORT struct pike_string *realloc_shared_string(struct pike_string *a, INT32 size); +PMOD_EXPORT static int low_binary_strcmp(char *a, ptrdiff_t alen, + char *b, ptrdiff_t blen); +PMOD_EXPORT ptrdiff_t my_quick_strcmp(struct pike_string *a, + struct pike_string *b); +PMOD_EXPORT ptrdiff_t my_strcmp(struct pike_string *a,struct pike_string *b); +PMOD_EXPORT struct pike_string *realloc_unlinked_string(struct pike_string *a, + ptrdiff_t size); +PMOD_EXPORT struct pike_string *realloc_shared_string(struct pike_string *a, + ptrdiff_t size); PMOD_EXPORT struct pike_string *new_realloc_shared_string(struct pike_string *a, INT32 size, int shift); PMOD_EXPORT struct pike_string *modify_shared_string(struct pike_string *a, INT32 index, @@ -213,9 +216,9 @@ PMOD_EXPORT struct pike_string *add_shared_strings(struct pike_string *a, struct pike_string *b); PMOD_EXPORT struct pike_string *add_and_free_shared_strings(struct pike_string *a, struct pike_string *b); -PMOD_EXPORT int string_search(struct pike_string *haystack, - struct pike_string *needle, - int start); +PMOD_EXPORT ptrdiff_t string_search(struct pike_string *haystack, + struct pike_string *needle, + ptrdiff_t start); PMOD_EXPORT struct pike_string *string_slice(struct pike_string *s, ptrdiff_t start, ptrdiff_t len); diff --git a/src/threads.c b/src/threads.c index eab2105dce6d87d1a6845b101b801eba70026797..5858d41d9ffb7d80005576e7721e720b3b752fc0 100644 --- a/src/threads.c +++ b/src/threads.c @@ -1,5 +1,5 @@ #include "global.h" -RCSID("$Id: threads.c,v 1.134 2000/08/10 09:51:52 per Exp $"); +RCSID("$Id: threads.c,v 1.135 2000/08/10 18:25:17 grubba Exp $"); PMOD_EXPORT int num_threads = 1; PMOD_EXPORT int threads_disabled = 0; @@ -213,7 +213,7 @@ struct program *thread_local_prog = 0; pthread_attr_t pattr; pthread_attr_t small_pattr; #endif -PMOD_EXPORT int thread_storage_offset; +PMOD_EXPORT ptrdiff_t thread_storage_offset; struct thread_starter { @@ -528,7 +528,7 @@ PMOD_EXPORT void f_all_threads(INT32 args) ref_push_object(o); } mt_unlock( & thread_table_lock ); - f_aggregate(Pike_sp-oldsp); + f_aggregate(DO_NOT_WARN(Pike_sp - oldsp)); } @@ -678,7 +678,7 @@ TH_RETURN_TYPE new_thread_func(void * data) mt_unlock_interpreter(); th_exit(0); /* NOT_REACHED, but removes a warning */ - return(NULL); + return(0); } #ifdef UNIX_THREADS @@ -1221,7 +1221,7 @@ void low_th_init(void) void th_init(void) { struct program *tmp; - INT32 mutex_key_offset; + ptrdiff_t mutex_key_offset; #ifdef UNIX_THREADS @@ -1429,7 +1429,7 @@ static TH_RETURN_TYPE farm(void *_a) --_num_farmers; mt_unlock( &rosie ); free( me ); - return NULL; + return 0; } me->neighbour = farmers; farmers = me; @@ -1440,7 +1440,7 @@ static TH_RETURN_TYPE farm(void *_a) /* fprintf(stderr, "farm_endwait %p\n", me); */ } while(1); /* NOT_REACHED */ - return NULL;/* Keep the compiler happy. */ + return 0;/* Keep the compiler happy. */ } int th_num_idle_farmers(void)