diff --git a/src/block_alloc_h.h b/src/block_alloc_h.h index 167e74f2bad990c62bd2f32988b459ac54d1c836..dfe20632d20f259d3302d9263613bb67532faca3 100644 --- a/src/block_alloc_h.h +++ b/src/block_alloc_h.h @@ -22,7 +22,7 @@ #define BLOCK_ALLOC(DATA,SIZE) \ struct DATA *PIKE_CONCAT(alloc_,DATA)(void); \ -PMOD_EXPORT void PIKE_CONCAT3(new_,DATA,_context)(void); \ +void PIKE_CONCAT3(new_,DATA,_context)(void); \ PMOD_EXPORT void PIKE_CONCAT(really_free_,DATA)(struct DATA *d); \ void PIKE_CONCAT3(free_all_,DATA,_blocks)(void); \ void PIKE_CONCAT3(count_memory_in_,DATA,s)(size_t *num, size_t *size); \ diff --git a/src/pike_memory.c b/src/pike_memory.c index f72567fb3d329eef6ba170b623942800f070d2bf..f0623805dfe79a1af0a05838b51d8ab21de3785d 100644 --- a/src/pike_memory.c +++ b/src/pike_memory.c @@ -71,7 +71,7 @@ p_wchar2 *MEMCHR2(p_wchar2 *p, p_wchar2 c, ptrdiff_t e) return (p_wchar2 *)NULL; } -void swap(char *a, char *b, size_t size) +static void swap(char *a, char *b, size_t size) { size_t tmp; char tmpbuf[1024]; @@ -232,7 +232,7 @@ size_t hashstr(const unsigned char *str, ptrdiff_t maxn) MK_HASHMEM(simple_hashmem, unsigned char) MK_HASHMEM(simple_hashmem1, p_wchar1) MK_HASHMEM(simple_hashmem2, p_wchar2) - +#if 0 void memfill(char *to, INT32 tolen, char *from, @@ -269,6 +269,7 @@ void memfill(char *to, } } } +#endif #if 0 #if defined(HAVE_GETRLIMIT) && defined(HAVE_SETRLIMIT) && defined(RLIMIT_DATA) @@ -704,7 +705,7 @@ PMOD_EXPORT void mexec_free(void *ptr) verify_mexec_hdr(hdr); } -PMOD_EXPORT void *mexec_alloc(size_t sz) +void *mexec_alloc(size_t sz) { struct mexec_hdr *hdr; struct mexec_block *res; @@ -747,7 +748,7 @@ PMOD_EXPORT void *mexec_alloc(size_t sz) return res + 1; } -PMOD_EXPORT void *mexec_realloc(void *ptr, size_t sz) +void *mexec_realloc(void *ptr, size_t sz) { struct mexec_hdr *hdr; struct mexec_hdr *old_hdr = NULL; @@ -863,7 +864,7 @@ PMOD_EXPORT void *mexec_realloc(void *ptr, size_t sz) #elif defined (VALGRIND_DISCARD_TRANSLATIONS) -PMOD_EXPORT void *mexec_alloc (size_t sz) +void *mexec_alloc (size_t sz) { size_t *blk = malloc (sz + sizeof (size_t)); if (!blk) return NULL; @@ -871,7 +872,7 @@ PMOD_EXPORT void *mexec_alloc (size_t sz) return blk + 1; } -PMOD_EXPORT void *mexec_realloc (void *ptr, size_t sz) +void *mexec_realloc (void *ptr, size_t sz) { if (ptr) { size_t *oldblk = ptr; @@ -888,7 +889,7 @@ PMOD_EXPORT void *mexec_realloc (void *ptr, size_t sz) return mexec_malloc (sz); } -PMOD_EXPORT void mexec_free (void *ptr) +void mexec_free (void *ptr) { size_t *blk = ptr; VALGRIND_DISCARD_TRANSLATIONS (blk, blk[-1]); @@ -897,16 +898,16 @@ PMOD_EXPORT void mexec_free (void *ptr) #else /* !USE_MY_MEXEC_ALLOC && !VALGRIND_DISCARD_TRANSLATIONS */ -PMOD_EXPORT void *mexec_alloc(size_t sz) +void *mexec_alloc(size_t sz) { return malloc(sz); } -PMOD_EXPORT void *mexec_realloc(void *ptr, size_t sz) +void *mexec_realloc(void *ptr, size_t sz) { if (ptr) return realloc(ptr, sz); return malloc(sz); } -PMOD_EXPORT void mexec_free(void *ptr) +void mexec_free(void *ptr) { free(ptr); } diff --git a/src/pike_memory.h b/src/pike_memory.h index 42f12ef0d314d1c36ed46c1ed685875b501df4cc..a73ceeda5725d5d1445b663b4d5aa58c19a0430a 100644 --- a/src/pike_memory.h +++ b/src/pike_memory.h @@ -136,37 +136,40 @@ struct mem_searcher #include "pike_search.h" #include "block_alloc_h.h" -#define MEMCHR0 MEMCHR - extern int page_size; /* Note to self: Prototypes must be updated manually /Hubbe */ -PMOD_EXPORT ptrdiff_t pcharp_memcmp(PCHARP a, PCHARP b, int sz); -PMOD_EXPORT long pcharp_strlen(PCHARP a); -PMOD_EXPORT p_wchar1 *MEMCHR1(p_wchar1 *p, p_wchar2 c, ptrdiff_t e); -PMOD_EXPORT p_wchar2 *MEMCHR2(p_wchar2 *p, p_wchar2 c, ptrdiff_t e); -PMOD_EXPORT void swap(char *a, char *b, size_t size); +PMOD_EXPORT ptrdiff_t pcharp_memcmp(PCHARP a, PCHARP b, int sz) ATTRIBUTE((pure)); +PMOD_EXPORT long pcharp_strlen(PCHARP a) ATTRIBUTE((pure)); + +#define MEMCHR0 MEMCHR +p_wchar1 *MEMCHR1(p_wchar1 *p, p_wchar2 c, ptrdiff_t e) ATTRIBUTE((pure)); +p_wchar2 *MEMCHR2(p_wchar2 *p, p_wchar2 c, ptrdiff_t e) ATTRIBUTE((pure)); + +/* PMOD_EXPORT void swap(char *a, char *b, size_t size); */ PMOD_EXPORT void reverse(char *memory, size_t nitems, size_t size); PMOD_EXPORT void reorder(char *memory, INT32 nitems, INT32 size,INT32 *order); -PMOD_EXPORT size_t hashmem(const unsigned char *a, size_t len, size_t mlen); -PMOD_EXPORT size_t hashstr(const unsigned char *str, ptrdiff_t maxn); -PMOD_EXPORT size_t simple_hashmem(const unsigned char *str, ptrdiff_t len, ptrdiff_t maxn); -PMOD_EXPORT size_t simple_hashmem1(const p_wchar1 *str, ptrdiff_t len, ptrdiff_t maxn); -PMOD_EXPORT size_t simple_hashmem2(const p_wchar2 *str, ptrdiff_t len, ptrdiff_t maxn); +PMOD_EXPORT size_t hashmem(const unsigned char *a, size_t len, size_t mlen) ATTRIBUTE((pure)); +PMOD_EXPORT size_t hashstr(const unsigned char *str, ptrdiff_t maxn) ATTRIBUTE((pure)); +PMOD_EXPORT size_t simple_hashmem(const unsigned char *str, ptrdiff_t len, ptrdiff_t maxn) ATTRIBUTE((pure)); +PMOD_EXPORT size_t simple_hashmem1(const p_wchar1 *str, ptrdiff_t len, ptrdiff_t maxn) ATTRIBUTE((pure)); +PMOD_EXPORT size_t simple_hashmem2(const p_wchar2 *str, ptrdiff_t len, ptrdiff_t maxn) ATTRIBUTE((pure)); +/* PMOD_EXPORT void memfill(char *to, INT32 tolen, char *from, INT32 fromlen, INT32 offset); -PMOD_EXPORT void *debug_xalloc(size_t size); -PMOD_EXPORT void *debug_xmalloc(size_t s); +*/ +PMOD_EXPORT void *debug_xalloc(size_t size) ATTRIBUTE((malloc)) ATTRIBUTE((alloc_size(1))) ATTRIBUTE((warn_unused_result)); +PMOD_EXPORT void *debug_xmalloc(size_t s) ATTRIBUTE((malloc)) ATTRIBUTE((alloc_size(1))) ATTRIBUTE((warn_unused_result)); PMOD_EXPORT void debug_xfree(void *mem); -PMOD_EXPORT void *debug_xrealloc(void *m, size_t s); -PMOD_EXPORT void *debug_xcalloc(size_t n, size_t s); +PMOD_EXPORT void *debug_xrealloc(void *m, size_t s) ATTRIBUTE((malloc)) ATTRIBUTE((alloc_size(2))) ATTRIBUTE((warn_unused_result)); +PMOD_EXPORT void *debug_xcalloc(size_t n, size_t s) ATTRIBUTE((malloc)) ATTRIBUTE((alloc_size(1,2))) ATTRIBUTE((warn_unused_result)); -PMOD_EXPORT void *mexec_alloc(size_t sz); -PMOD_EXPORT void *mexec_realloc(void *ptr, size_t sz); -PMOD_EXPORT void mexec_free(void *ptr); +void *mexec_alloc(size_t sz) ATTRIBUTE((malloc)) ATTRIBUTE((alloc_size(1))) ATTRIBUTE((warn_unused_result)); +void *mexec_realloc(void *ptr, size_t sz) ATTRIBUTE((malloc)) ATTRIBUTE((alloc_size(1))) ATTRIBUTE((warn_unused_result)); +void mexec_free(void *ptr); void init_pike_memory (void); void exit_pike_memory (void); diff --git a/src/stralloc.c b/src/stralloc.c index 8cd6bd915e64181f552f6236de9ed401036e2111..34b798e4f7656e1eb245a14aa0661af67216c9fe 100644 --- a/src/stralloc.c +++ b/src/stralloc.c @@ -248,28 +248,11 @@ CONVERT(1,2) CONVERT(2,0) CONVERT(2,1) - -PMOD_EXPORT int generic_compare_strings(const void *a, ptrdiff_t alen, int asize, - const void *b, ptrdiff_t blen, int bsize) -{ #define TWO_SIZES(X,Y) (((X)<<2)+(Y)) - if(alen != blen) return 0; - if(asize==bsize) - { - return !MEMCMP(a,b,alen<<asize); - }else{ - INT32 pos; - for(pos=0;pos< alen ;pos++) - if(generic_extract(a,asize,pos) != generic_extract(b,bsize,pos)) - return 0; - return 1; - } -} - -PMOD_EXPORT void generic_memcpy(PCHARP to, - PCHARP from, - ptrdiff_t len) +void generic_memcpy(PCHARP to, + PCHARP from, + ptrdiff_t len) { #ifdef PIKE_DEBUG if(len<0) @@ -768,7 +751,7 @@ PMOD_EXPORT void hash_string(struct pike_string *s) * This function assumes that the shift size is already the minimum it * can be. */ -PMOD_EXPORT struct pike_string *low_end_shared_string(struct pike_string *s) +struct pike_string *low_end_shared_string(struct pike_string *s) { ptrdiff_t len; size_t h=0; @@ -873,6 +856,7 @@ PMOD_EXPORT struct pike_string *end_shared_string(struct pike_string *s) return low_end_shared_string(s); } +#if 0 PMOD_EXPORT struct pike_string *defer_end_string(struct pike_string *s) { #ifdef STRING_DEFER_THRESHOLD @@ -882,6 +866,7 @@ PMOD_EXPORT struct pike_string *defer_end_string(struct pike_string *s) #endif return end_shared_string(s); } +#endif PMOD_EXPORT struct pike_string *end_and_resize_shared_string(struct pike_string *str, ptrdiff_t len) { @@ -1045,7 +1030,7 @@ PMOD_EXPORT struct pike_string *debug_make_shared_string2(const p_wchar2 *str) /*** Free strings ***/ -PMOD_EXPORT void unlink_pike_string(struct pike_string *s) +static void unlink_pike_string(struct pike_string *s) { size_t h; LOCK_BUCKET(s->hval); @@ -1108,7 +1093,7 @@ PMOD_EXPORT void really_free_string(struct pike_string *s) GC_FREE_SIMPLE_BLOCK(s); } -PMOD_EXPORT void do_really_free_string(struct pike_string *s) +void do_really_free_string(struct pike_string *s) { if (s) really_free_string(s); @@ -1294,7 +1279,7 @@ PMOD_EXPORT void verify_shared_strings_tables(void) Pike_fatal("Num strings is wrong %d!=%d\n",num,num_strings); } -PMOD_EXPORT int safe_debug_findstring(struct pike_string *foo) +int safe_debug_findstring(struct pike_string *foo) { unsigned INT32 e; if(!base_table) return 0; @@ -1315,7 +1300,7 @@ PMOD_EXPORT int safe_debug_findstring(struct pike_string *foo) return 0; } -PMOD_EXPORT struct pike_string *debug_findstring(const struct pike_string *foo) +struct pike_string *debug_findstring(const struct pike_string *foo) { struct pike_string *tmp; tmp=propagate_shared_string(foo, HMODULO(foo->hval)); @@ -1443,7 +1428,7 @@ PMOD_EXPORT int low_quick_binary_strcmp(char *a, ptrdiff_t alen, /* does not take locale into account */ -PMOD_EXPORT ptrdiff_t generic_quick_binary_strcmp(const char *a, +ptrdiff_t generic_quick_binary_strcmp(const char *a, ptrdiff_t alen, int asize, const char *b, ptrdiff_t blen, int bsize) @@ -1489,7 +1474,7 @@ PMOD_EXPORT ptrdiff_t generic_quick_binary_strcmp(const char *a, * * This can be used by eg replace_many() to speed up the comparisons. */ -PMOD_EXPORT ptrdiff_t generic_find_binary_prefix(const char *a, +ptrdiff_t generic_find_binary_prefix(const char *a, ptrdiff_t alen, int asize, const char *b, ptrdiff_t blen, int bsize) @@ -1646,8 +1631,8 @@ PMOD_EXPORT struct pike_string *realloc_unlinked_string(struct pike_string *a, } /* Returns an unlinked string ready for end_shared_string */ -PMOD_EXPORT struct pike_string *realloc_shared_string(struct pike_string *a, - ptrdiff_t size) +static struct pike_string *realloc_shared_string(struct pike_string *a, + ptrdiff_t size) { struct pike_string *r; if(a->refs==1) @@ -1662,7 +1647,7 @@ PMOD_EXPORT struct pike_string *realloc_shared_string(struct pike_string *a, } } -PMOD_EXPORT struct pike_string *new_realloc_shared_string(struct pike_string *a, INT32 size, int shift) +struct pike_string *new_realloc_shared_string(struct pike_string *a, INT32 size, int shift) { struct pike_string *r; if(shift == a->size_shift) return realloc_shared_string(a,size); @@ -1681,7 +1666,7 @@ PMOD_EXPORT struct pike_string *new_realloc_shared_string(struct pike_string *a, * Phew, this function become complicated when I inserted magic for wide * characters... */ -PMOD_EXPORT struct pike_string *modify_shared_string(struct pike_string *a, +struct pike_string *modify_shared_string(struct pike_string *a, INT32 index, INT32 c) { @@ -3125,7 +3110,7 @@ PMOD_EXPORT PCHARP MEMCHR_PCHARP(PCHARP ptr, int chr, ptrdiff_t len) { switch(ptr.shift) { - case 0: return MKPCHARP(MEMCHR0(ptr.ptr,chr,len),0); + case 0: return MKPCHARP(MEMCHR(ptr.ptr,chr,len),0); case 1: return MKPCHARP(MEMCHR1((p_wchar1 *)ptr.ptr,chr,len),1); case 2: return MKPCHARP(MEMCHR2((p_wchar2 *)ptr.ptr,chr,len),2); } @@ -3220,7 +3205,8 @@ PMOD_EXPORT long STRTOL_PCHARP(PCHARP str, PCHARP *ptr, int base) } } -PMOD_EXPORT int string_to_svalue_inumber(struct svalue *r, +/* +static int string_to_svalue_inumber(struct svalue *r, char * str, char **ptr, int base, @@ -3235,8 +3221,9 @@ PMOD_EXPORT int string_to_svalue_inumber(struct svalue *r, if(ptr) *ptr=(char *)tmp.ptr; return ret; } +*/ -PMOD_EXPORT int wide_string_to_svalue_inumber(struct svalue *r, +int wide_string_to_svalue_inumber(struct svalue *r, void * str, void *ptr, int base, diff --git a/src/stralloc.h b/src/stralloc.h index bc42a82ab65f6362b6a7037021ef8ce85b586401..86fd4c43feca2f72f124e492bbf323b8721a6afa 100644 --- a/src/stralloc.h +++ b/src/stralloc.h @@ -239,7 +239,7 @@ PMOD_EXPORT extern struct pike_string *empty_pike_string; /* Prototypes begin here */ PMOD_EXPORT p_wchar2 index_shared_string(struct pike_string *s, ptrdiff_t pos); -PMOD_EXPORT void low_set_index(struct pike_string *s, ptrdiff_t pos, +void low_set_index(struct pike_string *s, ptrdiff_t pos, int value); PMOD_EXPORT struct pike_string *debug_check_size_shift(struct pike_string *a,int shift); CONVERT(0,1) @@ -248,14 +248,16 @@ CONVERT(1,0) CONVERT(1,2) CONVERT(2,0) CONVERT(2,1) +/* PMOD_EXPORT int generic_compare_strings(const void *a, ptrdiff_t alen, int asize, const void *b, ptrdiff_t blen, int bsize); -PMOD_EXPORT void generic_memcpy(PCHARP to, - PCHARP from, - ptrdiff_t len); +*/ +void generic_memcpy(PCHARP to, + PCHARP from, + ptrdiff_t len); PMOD_EXPORT void pike_string_cpy(PCHARP to, struct pike_string *from); -PMOD_EXPORT struct pike_string *binary_findstring(const char *foo, ptrdiff_t l); -PMOD_EXPORT struct pike_string *findstring(const char *foo); +struct pike_string *binary_findstring(const char *foo, ptrdiff_t l); +struct pike_string *findstring(const char *foo); struct short_pike_string0; struct short_pike_string1; struct short_pike_string2; @@ -264,58 +266,52 @@ BLOCK_ALLOC(short_pike_string1, SHORT_STRING_BLOCK); BLOCK_ALLOC(short_pike_string2, SHORT_STRING_BLOCK); - - -PMOD_EXPORT struct pike_string *debug_begin_shared_string(size_t len); -PMOD_EXPORT struct pike_string *debug_begin_wide_shared_string(size_t len, int shift); +PMOD_EXPORT struct pike_string *debug_begin_shared_string(size_t len) ATTRIBUTE((malloc)); +PMOD_EXPORT struct pike_string *debug_begin_wide_shared_string(size_t len, int shift) ATTRIBUTE((malloc)); PMOD_EXPORT struct pike_string *low_end_shared_string(struct pike_string *s); PMOD_EXPORT struct pike_string *end_shared_string(struct pike_string *s); -PMOD_EXPORT struct pike_string *end_and_resize_shared_string(struct pike_string *str, ptrdiff_t len); -PMOD_EXPORT struct pike_string * debug_make_shared_binary_string(const char *str,size_t len); -PMOD_EXPORT struct pike_string * debug_make_shared_binary_pcharp(const PCHARP str,size_t len); -PMOD_EXPORT struct pike_string * debug_make_shared_pcharp(const PCHARP str); -PMOD_EXPORT struct pike_string * debug_make_shared_binary_string0(const p_wchar0 *str,size_t len); -PMOD_EXPORT struct pike_string * debug_make_shared_binary_string1(const p_wchar1 *str,size_t len); -PMOD_EXPORT struct pike_string * debug_make_shared_binary_string2(const p_wchar2 *str,size_t len); -PMOD_EXPORT struct pike_string *debug_make_shared_string(const char *str); -PMOD_EXPORT struct pike_string *debug_make_shared_string0(const p_wchar0 *str); -PMOD_EXPORT struct pike_string *debug_make_shared_string1(const p_wchar1 *str); -PMOD_EXPORT struct pike_string *debug_make_shared_string2(const p_wchar2 *str); -PMOD_EXPORT void unlink_pike_string(struct pike_string *s); +PMOD_EXPORT struct pike_string *end_and_resize_shared_string(struct pike_string *str, ptrdiff_t len) ; +PMOD_EXPORT struct pike_string * debug_make_shared_binary_string(const char *str,size_t len) ATTRIBUTE((malloc)); +PMOD_EXPORT struct pike_string * debug_make_shared_binary_pcharp(const PCHARP str,size_t len) ATTRIBUTE((malloc)); +PMOD_EXPORT struct pike_string * debug_make_shared_pcharp(const PCHARP str) ATTRIBUTE((malloc)); +PMOD_EXPORT struct pike_string * debug_make_shared_binary_string0(const p_wchar0 *str,size_t len) ATTRIBUTE((malloc)); +PMOD_EXPORT struct pike_string * debug_make_shared_binary_string1(const p_wchar1 *str,size_t len) ATTRIBUTE((malloc)); +PMOD_EXPORT struct pike_string * debug_make_shared_binary_string2(const p_wchar2 *str,size_t len) ATTRIBUTE((malloc)); +PMOD_EXPORT struct pike_string *debug_make_shared_string(const char *str) ATTRIBUTE((malloc)); +PMOD_EXPORT struct pike_string *debug_make_shared_string0(const p_wchar0 *str) ATTRIBUTE((malloc)); +PMOD_EXPORT struct pike_string *debug_make_shared_string1(const p_wchar1 *str) ATTRIBUTE((malloc)); +PMOD_EXPORT struct pike_string *debug_make_shared_string2(const p_wchar2 *str) ATTRIBUTE((malloc)); PMOD_EXPORT void do_free_string(struct pike_string *s); -PMOD_EXPORT void do_really_free_string(struct pike_string *s); PMOD_EXPORT void do_free_unlinked_pike_string(struct pike_string *s); PMOD_EXPORT void really_free_string(struct pike_string *s); PMOD_EXPORT void debug_free_string(struct pike_string *s); struct pike_string *add_string_status(int verbose); PMOD_EXPORT void check_string(struct pike_string *s); PMOD_EXPORT void verify_shared_strings_tables(void); -PMOD_EXPORT int safe_debug_findstring(struct pike_string *foo); -PMOD_EXPORT struct pike_string *debug_findstring(const struct pike_string *foo); +int safe_debug_findstring(struct pike_string *foo); +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, 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 ptrdiff_t generic_find_binary_prefix(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); +int low_quick_binary_strcmp(char *a, ptrdiff_t alen, + char *b, ptrdiff_t blen) ATTRIBUTE((pure)); +ptrdiff_t generic_quick_binary_strcmp(const char *a, + ptrdiff_t alen, int asize, + const char *b, + ptrdiff_t blen, int bsize) ATTRIBUTE((pure)); +ptrdiff_t generic_find_binary_prefix(const char *a, + ptrdiff_t alen, int asize, + const char *b, + ptrdiff_t blen, int bsize) ATTRIBUTE((pure)); +PMOD_EXPORT int c_compare_string(struct pike_string *s, char *foo, int len) ATTRIBUTE((pure)); 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 position, - INT32 c); + struct pike_string *b) ATTRIBUTE((pure)); +PMOD_EXPORT ptrdiff_t my_strcmp(struct pike_string *a,struct pike_string *b) ATTRIBUTE((pure)); +struct pike_string *realloc_unlinked_string(struct pike_string *a, + ptrdiff_t size); +struct pike_string *new_realloc_shared_string(struct pike_string *a, INT32 size, int shift) ATTRIBUTE((malloc)); +struct pike_string *modify_shared_string(struct pike_string *a, + INT32 position, + INT32 c); 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, @@ -393,12 +389,12 @@ PMOD_EXPORT int string_to_svalue_inumber(struct svalue *r, char **ptr, int base, int maxlength); -PMOD_EXPORT int wide_string_to_svalue_inumber(struct svalue *r, +int wide_string_to_svalue_inumber(struct svalue *r, void * str, void *ptr, int base, ptrdiff_t maxlength, - int shift); + int shift); int safe_wide_string_to_svalue_inumber(struct svalue *r, void * str, void *ptr, @@ -413,7 +409,7 @@ PMOD_EXPORT int pcharp_to_svalue_inumber(struct svalue *r, PMOD_EXPORT int convert_stack_top_string_to_inumber(int base); PMOD_EXPORT double STRTOD_PCHARP(PCHARP nptr, PCHARP *endptr); PMOD_EXPORT p_wchar0 *require_wstring0(struct pike_string *s, - char **to_free); + char **to_free); PMOD_EXPORT p_wchar1 *require_wstring1(struct pike_string *s, char **to_free); PMOD_EXPORT p_wchar2 *require_wstring2(struct pike_string *s,