diff --git a/include/my_global.h b/include/my_global.h index 5e097248c35..a98a99217b8 100644 --- a/include/my_global.h +++ b/include/my_global.h @@ -528,7 +528,9 @@ typedef int pbool; /* Mixed prototypes can't take char */ typedef int pshort; /* Mixed prototypes can't take short int */ typedef double pfloat; /* Mixed prototypes can't take float */ #endif + #include + #define qsort_t RETQSORTTYPE /* Broken GCC can't handle typedef !!!! */ #ifdef HAVE_SYS_SOCKET_H #include diff --git a/sql/sql_analyse.cc b/sql/sql_analyse.cc index f92ab417209..e01e26b7a74 100644 --- a/sql/sql_analyse.cc +++ b/sql/sql_analyse.cc @@ -1073,10 +1073,10 @@ String *field_decimal::std(String *s, ha_rows rows) } -int collect_string(String *element, - element_count count __attribute__((unused)), - TREE_INFO *info) +int collect_string(void *element_, element_count, void *info_) { + String *element= static_cast(element_); + TREE_INFO *info= static_cast(info_); if (info->found) info->str->append(','); else @@ -1089,9 +1089,10 @@ int collect_string(String *element, } // collect_string -int collect_real(double *element, element_count count __attribute__((unused)), - TREE_INFO *info) +int collect_real(void *element_, element_count, void *info_) { + double *element= static_cast(element_); + TREE_INFO *info= static_cast(info_); char buff[MAX_FIELD_WIDTH]; String s(buff, sizeof(buff),current_thd->charset()); @@ -1107,9 +1108,10 @@ int collect_real(double *element, element_count count __attribute__((unused)), } // collect_real -int collect_decimal(uchar *element, element_count count, - TREE_INFO *info) +int collect_decimal(void *element_, element_count count, void *info_) { + uchar *element= static_cast(element_); + TREE_INFO *info= static_cast(info_); char buff[DECIMAL_MAX_STR_LENGTH]; String s(buff, sizeof(buff),&my_charset_bin); @@ -1126,10 +1128,10 @@ int collect_decimal(uchar *element, element_count count, } -int collect_longlong(longlong *element, - element_count count __attribute__((unused)), - TREE_INFO *info) +int collect_longlong(void *element_, element_count, void *info_) { + longlong *element= static_cast(element_); + TREE_INFO *info= static_cast(info_); char buff[MAX_FIELD_WIDTH]; String s(buff, sizeof(buff),&my_charset_bin); @@ -1145,10 +1147,10 @@ int collect_longlong(longlong *element, } // collect_longlong -int collect_ulonglong(ulonglong *element, - element_count count __attribute__((unused)), - TREE_INFO *info) +int collect_ulonglong(void *element_, element_count, void *info_) { + ulonglong *element= static_cast(element_); + TREE_INFO *info= static_cast(info_); char buff[MAX_FIELD_WIDTH]; String s(buff, sizeof(buff),&my_charset_bin); diff --git a/sql/sql_analyse.h b/sql/sql_analyse.h index 1f3089ae25a..89f4c0f3e15 100644 --- a/sql/sql_analyse.h +++ b/sql/sql_analyse.h @@ -95,9 +95,7 @@ public: friend class analyse; }; - -int collect_string(String *element, element_count count, - TREE_INFO *info); +int collect_string(void *element, element_count count, void *info); int sortcmp2(void *, const void *a, const void *b); @@ -139,15 +137,14 @@ public: friend int collect_string(String *element, element_count count, TREE_INFO *info); tree_walk_action collect_enum() override - { return (tree_walk_action) collect_string; } + { return collect_string; } String *std(String *s __attribute__((unused)), ha_rows rows __attribute__((unused))) override { return (String*) 0; } }; -int collect_decimal(uchar *element, element_count count, - TREE_INFO *info); +int collect_decimal(void *element, element_count count, void *info); class field_decimal :public field_info { @@ -171,12 +168,12 @@ public: friend int collect_decimal(uchar *element, element_count count, TREE_INFO *info); tree_walk_action collect_enum() override - { return (tree_walk_action) collect_decimal; } + { return collect_decimal; } String *std(String *s, ha_rows rows) override; }; -int collect_real(double *element, element_count count, TREE_INFO *info); +int collect_real(void *element, element_count count, void *info); class field_real: public field_info { @@ -229,11 +226,10 @@ public: friend int collect_real(double *element, element_count count, TREE_INFO *info); tree_walk_action collect_enum() override - { return (tree_walk_action) collect_real;} + { return collect_real;} }; -int collect_longlong(longlong *element, element_count count, - TREE_INFO *info); +int collect_longlong(void *element, element_count count, void *info); class field_longlong: public field_info { @@ -276,11 +272,10 @@ public: friend int collect_longlong(longlong *element, element_count count, TREE_INFO *info); tree_walk_action collect_enum() override - { return (tree_walk_action) collect_longlong;} + { return collect_longlong;} }; -int collect_ulonglong(ulonglong *element, element_count count, - TREE_INFO *info); +int collect_ulonglong(void *element, element_count count, void *info); class field_ulonglong: public field_info { @@ -324,7 +319,7 @@ public: friend int collect_ulonglong(ulonglong *element, element_count count, TREE_INFO *info); tree_walk_action collect_enum() override - { return (tree_walk_action) collect_ulonglong; } + { return collect_ulonglong; } }; diff --git a/sql/uniques.cc b/sql/uniques.cc index 2be3ca5d7ed..1f2fbf8e785 100644 --- a/sql/uniques.cc +++ b/sql/uniques.cc @@ -40,8 +40,10 @@ #include "uniques.h" // Unique #include "sql_sort.h" -int unique_write_to_file(uchar* key, element_count count, Unique *unique) +int unique_write_to_file(void* key_, element_count, void *unique_) { + uchar *key= static_cast(key_); + Unique *unique= static_cast(unique_); /* Use unique->size (size of element stored in the tree) and not unique->tree.size_of_element. The latter is different from unique->size @@ -51,21 +53,30 @@ int unique_write_to_file(uchar* key, element_count count, Unique *unique) return my_b_write(&unique->file, key, unique->size) ? 1 : 0; } -int unique_write_to_file_with_count(uchar* key, element_count count, Unique *unique) +int unique_write_to_file_with_count(void* key_, element_count count, void *unique_) { + uchar *key= static_cast(key_); + Unique *unique= static_cast(unique_); return my_b_write(&unique->file, key, unique->size) || - my_b_write(&unique->file, (uchar*)&count, sizeof(element_count)) ? 1 : 0; + my_b_write(&unique->file, reinterpret_cast(&count), + sizeof(element_count)) + ? 1 + : 0; } -int unique_write_to_ptrs(uchar* key, element_count count, Unique *unique) +int unique_write_to_ptrs(void* key_, element_count, void *unique_) { + uchar *key= static_cast(key_); + Unique *unique= static_cast(unique_); memcpy(unique->sort.record_pointers, key, unique->size); unique->sort.record_pointers+=unique->size; return 0; } -int unique_intersect_write_to_ptrs(uchar* key, element_count count, Unique *unique) +int unique_intersect_write_to_ptrs(void* key_, element_count count, void *unique_) { + uchar *key= static_cast(key_); + Unique *unique= static_cast(unique_); if (count >= unique->min_dupl_count) { memcpy(unique->sort.record_pointers, key, unique->size); @@ -383,8 +394,8 @@ bool Unique::flush() file_ptr.set_file_position(my_b_tell(&file)); tree_walk_action action= min_dupl_count ? - (tree_walk_action) unique_write_to_file_with_count : - (tree_walk_action) unique_write_to_file; + unique_write_to_file_with_count : + unique_write_to_file; if (tree_walk(&tree, action, (void*) this, left_root_right) || insert_dynamic(&file_ptrs, (uchar*) &file_ptr)) @@ -800,8 +811,8 @@ bool Unique::get(TABLE *table) { uchar *save_record_pointers= sort.record_pointers; tree_walk_action action= min_dupl_count ? - (tree_walk_action) unique_intersect_write_to_ptrs : - (tree_walk_action) unique_write_to_ptrs; + unique_intersect_write_to_ptrs : + unique_write_to_ptrs; filtered_out_elems= 0; (void) tree_walk(&tree, action, this, left_root_right); diff --git a/sql/uniques.h b/sql/uniques.h index 7e12a391fbd..583c7514db1 100644 --- a/sql/uniques.h +++ b/sql/uniques.h @@ -98,13 +98,13 @@ public: uint get_size() const { return size; } size_t get_max_in_memory_size() const { return max_in_memory_size; } - friend int unique_write_to_file(uchar* key, element_count count, Unique *unique); - friend int unique_write_to_ptrs(uchar* key, element_count count, Unique *unique); + friend int unique_write_to_file(void* key, element_count count, void *unique); + friend int unique_write_to_ptrs(void* key, element_count count, void *unique); - friend int unique_write_to_file_with_count(uchar* key, element_count count, - Unique *unique); - friend int unique_intersect_write_to_ptrs(uchar* key, element_count count, - Unique *unique); + friend int unique_write_to_file_with_count(void *key, element_count count, + void *unique); + friend int unique_intersect_write_to_ptrs(void *key, element_count count, + void *unique); }; #endif /* UNIQUE_INCLUDED */ diff --git a/storage/maria/aria_pack.c b/storage/maria/aria_pack.c index 4a9719addd3..5e07c3311a7 100644 --- a/storage/maria/aria_pack.c +++ b/storage/maria/aria_pack.c @@ -148,8 +148,7 @@ static HUFF_TREE* make_huff_trees(HUFF_COUNTS *huff_counts,uint trees); static int make_huff_tree(HUFF_TREE *tree,HUFF_COUNTS *huff_counts); static int compare_huff_elements(void *not_used, const void *a, const void *b); -static int save_counts_in_queue(uchar *key,element_count count, - HUFF_TREE *tree); +static int save_counts_in_queue(void *key, element_count count, void *tree); static my_off_t calc_packed_length(HUFF_COUNTS *huff_counts,uint flag); static uint join_same_trees(HUFF_COUNTS *huff_counts,uint trees); static int make_huff_decode_table(HUFF_TREE *huff_tree,uint trees); @@ -1806,9 +1805,10 @@ static int compare_tree(void *cmp_arg __attribute__((unused)), const void *s_, 0 */ -static int save_counts_in_queue(uchar *key, element_count count, - HUFF_TREE *tree) +static int save_counts_in_queue(void *key_, element_count count, void *tree_) { + uchar *key= key_; + HUFF_TREE *tree= tree_; HUFF_ELEMENT *new_huff_el; new_huff_el=tree->element_buffer+(tree->elements++); diff --git a/storage/maria/ma_ft_nlq_search.c b/storage/maria/ma_ft_nlq_search.c index 2e5d19a607f..db3ebc220f6 100644 --- a/storage/maria/ma_ft_nlq_search.c +++ b/storage/maria/ma_ft_nlq_search.c @@ -64,8 +64,10 @@ static int FT_SUPERDOC_cmp(void *cmp_arg __attribute__((unused)), return 1; } -static int walk_and_match(FT_WORD *word, uint32 count, ALL_IN_ONE *aio) +static int walk_and_match(void *word_, element_count count, void *aio_) { + FT_WORD *word= word_; + ALL_IN_ONE *aio= aio_; FT_WEIGTH subkeys; int r; uint doc_cnt; @@ -188,9 +190,11 @@ do_skip: } -static int walk_and_copy(FT_SUPERDOC *from, - uint32 count __attribute__((unused)), FT_DOC **to) +static int walk_and_copy(void *from_, uint32 count __attribute__((unused)), + void *to_) { + FT_SUPERDOC *from= from_; + FT_DOC **to= to_; DBUG_ENTER("walk_and_copy"); from->doc.weight+=from->tmp_weight*from->word_ptr->weight; (*to)->dpos=from->doc.dpos; @@ -199,9 +203,13 @@ static int walk_and_copy(FT_SUPERDOC *from, DBUG_RETURN(0); } -static int walk_and_push(FT_SUPERDOC *from, - uint32 count __attribute__((unused)), QUEUE *best) +static int walk_and_push(void *from_, + element_count count __attribute__((unused)), + void *best_) { + FT_SUPERDOC *from= from_; + QUEUE *best= best_; + DBUG_ENTER("walk_and_copy"); from->doc.weight+=from->tmp_weight*from->word_ptr->weight; set_if_smaller(best->elements, ft_query_expansion_limit-1); @@ -257,7 +265,7 @@ FT_INFO *maria_ft_init_nlq_search(MARIA_HA *info, uint keynr, uchar *query, &wtree.mem_root)) goto err; - if (tree_walk(&wtree, (tree_walk_action)&walk_and_match, &aio, + if (tree_walk(&wtree, &walk_and_match, &aio, left_root_right)) goto err; @@ -265,7 +273,7 @@ FT_INFO *maria_ft_init_nlq_search(MARIA_HA *info, uint keynr, uchar *query, { QUEUE best; init_queue(&best, ft_query_expansion_limit, 0, 0, &FT_DOC_cmp, 0, 0, 0); - tree_walk(&aio.dtree, (tree_walk_action) &walk_and_push, + tree_walk(&aio.dtree, &walk_and_push, &best, left_root_right); while (best.elements) { @@ -284,7 +292,7 @@ FT_INFO *maria_ft_init_nlq_search(MARIA_HA *info, uint keynr, uchar *query, } delete_queue(&best); reset_tree(&aio.dtree); - if (tree_walk(&wtree, (tree_walk_action)&walk_and_match, &aio, + if (tree_walk(&wtree, &walk_and_match, &aio, left_root_right)) goto err; @@ -307,7 +315,7 @@ FT_INFO *maria_ft_init_nlq_search(MARIA_HA *info, uint keynr, uchar *query, dlist->info=aio.info; dptr=dlist->doc; - tree_walk(&aio.dtree, (tree_walk_action) &walk_and_copy, + tree_walk(&aio.dtree, &walk_and_copy, &dptr, left_root_right); if (flags & FT_SORTED) diff --git a/storage/maria/ma_ft_parser.c b/storage/maria/ma_ft_parser.c index 015fcdd0268..86810f73a2a 100644 --- a/storage/maria/ma_ft_parser.c +++ b/storage/maria/ma_ft_parser.c @@ -40,8 +40,11 @@ static int FT_WORD_cmp(void *cs_, const void *w1_, const void *w2_) return ha_compare_word(cs, w1->pos, w1->len, w2->pos, w2->len); } -static int walk_and_copy(FT_WORD *word,uint32 count,FT_DOCSTAT *docstat) + +static int walk_and_copy(void *word_, element_count count, void *docstat_) { + FT_WORD *word= word_; + FT_DOCSTAT *docstat= docstat_; word->weight=LWS_IN_USE; docstat->sum+=word->weight; memcpy((docstat->list)++, word, sizeof(FT_WORD)); @@ -62,7 +65,7 @@ FT_WORD * maria_ft_linearize(TREE *wtree, MEM_ROOT *mem_root) docstat.list=wlist; docstat.uniq=wtree->elements_in_tree; docstat.sum=0; - tree_walk(wtree,(tree_walk_action)&walk_and_copy,&docstat,left_root_right); + tree_walk(wtree,&walk_and_copy,&docstat,left_root_right); } delete_tree(wtree, 0); if (!wlist) diff --git a/storage/myisam/ft_nlq_search.c b/storage/myisam/ft_nlq_search.c index 3bc1340f670..dd89e36f41a 100644 --- a/storage/myisam/ft_nlq_search.c +++ b/storage/myisam/ft_nlq_search.c @@ -62,8 +62,10 @@ static int FT_SUPERDOC_cmp(void *cmp_arg __attribute__((unused)), return 1; } -static int walk_and_match(FT_WORD *word, uint32 count, ALL_IN_ONE *aio) +static int walk_and_match(void *word_, element_count count, void *aio_) { + FT_WORD *word= word_; + ALL_IN_ONE *aio= aio_; FT_WEIGTH subkeys; int r; uint keylen, doc_cnt; @@ -185,9 +187,11 @@ do_skip: } -static int walk_and_copy(FT_SUPERDOC *from, - uint32 count __attribute__((unused)), FT_DOC **to) +static int walk_and_copy(void *from_, uint32 count __attribute__((unused)), + void *to_) { + FT_SUPERDOC *from= from_; + FT_DOC **to= to_; DBUG_ENTER("walk_and_copy"); from->doc.weight+=from->tmp_weight*from->word_ptr->weight; (*to)->dpos=from->doc.dpos; @@ -196,9 +200,12 @@ static int walk_and_copy(FT_SUPERDOC *from, DBUG_RETURN(0); } -static int walk_and_push(FT_SUPERDOC *from, - uint32 count __attribute__((unused)), QUEUE *best) +static int walk_and_push(void *from_, + element_count count __attribute__((unused)), + void *best_) { + FT_SUPERDOC *from= from_; + QUEUE *best= best_; DBUG_ENTER("walk_and_copy"); from->doc.weight+=from->tmp_weight*from->word_ptr->weight; set_if_smaller(best->elements, ft_query_expansion_limit-1); @@ -253,7 +260,7 @@ FT_INFO *ft_init_nlq_search(MI_INFO *info, uint keynr, uchar *query, &wtree.mem_root)) goto err; - if (tree_walk(&wtree, (tree_walk_action)&walk_and_match, &aio, + if (tree_walk(&wtree, &walk_and_match, &aio, left_root_right)) goto err; @@ -261,7 +268,7 @@ FT_INFO *ft_init_nlq_search(MI_INFO *info, uint keynr, uchar *query, { QUEUE best; init_queue(&best, ft_query_expansion_limit, 0, 0, &FT_DOC_cmp, 0, 0, 0); - tree_walk(&aio.dtree, (tree_walk_action) &walk_and_push, + tree_walk(&aio.dtree, &walk_and_push, &best, left_root_right); while (best.elements) { @@ -280,7 +287,7 @@ FT_INFO *ft_init_nlq_search(MI_INFO *info, uint keynr, uchar *query, } delete_queue(&best); reset_tree(&aio.dtree); - if (tree_walk(&wtree, (tree_walk_action)&walk_and_match, &aio, + if (tree_walk(&wtree, &walk_and_match, &aio, left_root_right)) goto err; @@ -303,7 +310,7 @@ FT_INFO *ft_init_nlq_search(MI_INFO *info, uint keynr, uchar *query, dlist->info=aio.info; dptr=dlist->doc; - tree_walk(&aio.dtree, (tree_walk_action) &walk_and_copy, + tree_walk(&aio.dtree, &walk_and_copy, &dptr, left_root_right); if (flags & FT_SORTED) diff --git a/storage/myisam/ft_parser.c b/storage/myisam/ft_parser.c index 47ce67ab0db..25ef65d33af 100644 --- a/storage/myisam/ft_parser.c +++ b/storage/myisam/ft_parser.c @@ -37,8 +37,10 @@ static int FT_WORD_cmp(void *cs_, const void *w1_, const void *w2_) return ha_compare_word(cs, w1->pos, w1->len, w2->pos, w2->len); } -static int walk_and_copy(FT_WORD *word,uint32 count,FT_DOCSTAT *docstat) +static int walk_and_copy(void *word_, element_count count, void *docstat_) { + FT_WORD *word= word_; + FT_DOCSTAT *docstat= docstat_; word->weight=LWS_IN_USE; docstat->sum+=word->weight; memcpy((docstat->list)++, word, sizeof(FT_WORD)); @@ -59,7 +61,7 @@ FT_WORD * ft_linearize(TREE *wtree, MEM_ROOT *mem_root) docstat.list=wlist; docstat.uniq=wtree->elements_in_tree; docstat.sum=0; - tree_walk(wtree,(tree_walk_action)&walk_and_copy,&docstat,left_root_right); + tree_walk(wtree,&walk_and_copy,&docstat,left_root_right); } delete_tree(wtree, 0); if (!wlist) diff --git a/storage/myisam/ft_stopwords.c b/storage/myisam/ft_stopwords.c index b6a07f555a7..4ada6cecc58 100644 --- a/storage/myisam/ft_stopwords.c +++ b/storage/myisam/ft_stopwords.c @@ -39,9 +39,10 @@ static int FT_STOPWORD_cmp(void *cmp_arg __attribute__((unused)), (uchar *) w2->pos, w2->len); } -static int FT_STOPWORD_free(FT_STOPWORD *w, TREE_FREE action, +static int FT_STOPWORD_free(void *w_, TREE_FREE action, void *arg __attribute__((unused))) { + FT_STOPWORD *w= w_; if (action == free_free) my_free((void*)w->pos); return 0; diff --git a/storage/myisam/mi_locking.c b/storage/myisam/mi_locking.c index 33a1c86c0d7..103fa725723 100644 --- a/storage/myisam/mi_locking.c +++ b/storage/myisam/mi_locking.c @@ -452,8 +452,10 @@ my_bool mi_check_status(void *param) structure. */ -void mi_fix_status(MI_INFO *org_table, MI_INFO *new_table) +void mi_fix_status(void *ord_table_, void *new_table_) { + MI_INFO *org_table= ord_table_; + MI_INFO *new_table= new_table_; DBUG_ENTER("mi_fix_status"); if (!new_table) { diff --git a/storage/myisam/myisamdef.h b/storage/myisam/myisamdef.h index f84ad6fa184..fe1d450e2c3 100644 --- a/storage/myisam/myisamdef.h +++ b/storage/myisam/myisamdef.h @@ -731,7 +731,7 @@ void mi_update_status(void *param); void mi_restore_status(void *param); void mi_copy_status(void *to, void *from); my_bool mi_check_status(void *param); -void mi_fix_status(MI_INFO *org_table, MI_INFO *new_table); +void mi_fix_status(void *org_table, void *new_table); extern MI_INFO *test_if_reopen(char *filename); my_bool check_table_is_closed(const char *name, const char *where); int mi_open_datafile(MI_INFO *info, MYISAM_SHARE *share); diff --git a/storage/myisam/myisamlog.c b/storage/myisam/myisamlog.c index d227c010608..d39bc510871 100644 --- a/storage/myisam/myisamlog.c +++ b/storage/myisam/myisamlog.c @@ -58,11 +58,10 @@ static void get_options(int *argc,char ***argv); static int examine_log(char * file_name,char **table_names); static int read_string(IO_CACHE *file,uchar* *to,uint length); static int file_info_compare(void *cmp_arg, const void *a, const void *b); -static int test_if_open(struct file_info *key,element_count count, - struct test_if_open_param *param); +static int test_if_open(void *key, element_count count, void *param); static void fix_blob_pointers(MI_INFO *isam,uchar *record); -static int test_when_accessed(struct file_info *key,element_count count, - struct st_access_param *access_param); +static int test_when_accessed(void *key, element_count count, + void *access_param); static int file_info_free(void*, TREE_FREE, void *); static int close_some_file(TREE *tree); static int reopen_closed_file(TREE *tree,struct file_info *file_info); @@ -411,7 +410,7 @@ static int examine_log(char * file_name, char **table_names) } open_param.name=file_info.name; open_param.max_id=0; - (void) tree_walk(&tree,(tree_walk_action) test_if_open,(void*) &open_param, + (void) tree_walk(&tree, test_if_open,(void*) &open_param, left_root_right); file_info.id=open_param.max_id+1; /* @@ -709,10 +708,12 @@ static int file_info_compare(void *cmp_arg __attribute__((unused)), /* ARGSUSED */ -static int test_if_open (struct file_info *key, +static int test_if_open (void *key_, element_count count __attribute__((unused)), - struct test_if_open_param *param) + void *param_) { + struct file_info *key= key_; + struct test_if_open_param *param= param_; if (!strcmp(key->name,param->name) && key->id > param->max_id) param->max_id=key->id; return 0; @@ -737,10 +738,12 @@ static void fix_blob_pointers(MI_INFO *info, uchar *record) /* close the file with hasn't been accessed for the longest time */ /* ARGSUSED */ -static int test_when_accessed (struct file_info *key, +static int test_when_accessed (void *key_, element_count count __attribute__((unused)), - struct st_access_param *access_param) + void *access_param_) { + struct file_info *key= key_; + struct st_access_param *access_param= access_param_; if (key->accessed < access_param->min_accessed && ! key->closed) { access_param->min_accessed=key->accessed; @@ -776,7 +779,7 @@ static int close_some_file(TREE *tree) access_param.min_accessed=LONG_MAX; access_param.found=0; - (void) tree_walk(tree,(tree_walk_action) test_when_accessed, + (void) tree_walk(tree, test_when_accessed, (void*) &access_param,left_root_right); if (!access_param.found) return 1; /* No open file that is possibly to close */ diff --git a/storage/myisam/myisampack.c b/storage/myisam/myisampack.c index c66dc01bcd5..77fdaf8e164 100644 --- a/storage/myisam/myisampack.c +++ b/storage/myisam/myisampack.c @@ -143,8 +143,8 @@ static int test_space_compress(HUFF_COUNTS *huff_counts,my_off_t records, static HUFF_TREE* make_huff_trees(HUFF_COUNTS *huff_counts,uint trees); static int make_huff_tree(HUFF_TREE *tree,HUFF_COUNTS *huff_counts); static int compare_huff_elements(void *not_used, const void *a, const void *b); -static int save_counts_in_queue(uchar *key,element_count count, - HUFF_TREE *tree); +static int save_counts_in_queue(void *key, element_count count, + void *tree); static my_off_t calc_packed_length(HUFF_COUNTS *huff_counts,uint flag); static uint join_same_trees(HUFF_COUNTS *huff_counts,uint trees); static int make_huff_decode_table(HUFF_TREE *huff_tree,uint trees); @@ -1728,9 +1728,10 @@ static int compare_tree(void *cmp_arg __attribute__((unused)), const void *s_, 0 */ -static int save_counts_in_queue(uchar *key, element_count count, - HUFF_TREE *tree) +static int save_counts_in_queue(void *key_, element_count count, void *tree_) { + uchar *key= key_; + HUFF_TREE *tree= tree_; HUFF_ELEMENT *new_huff_el; new_huff_el=tree->element_buffer+(tree->elements++);