[openib-general] Re: Re:[PATCH] OpenSM/st.c: Fix some size_t issues related to memoryallocation in st.c
Hal Rosenstock
halr at voltaire.com
Mon Feb 20 07:27:31 PST 2006
Hi Yael,
On Sun, 2006-02-19 at 07:24, Yael Kalka wrote:
> Hi Hal,
>
> The patch in general is fine. I've added one change to the original
> patch - to avoid casting issues underwindows
> Below is the full patch.
This looks like the same patch to me. What changed ? (What did I miss ?)
-- Hal
>
> Yael
>
> Signed-off-by: Hal Rosenstock <halr at voltaire.com>
>
> Index: include/opensm/st.h ===================================================================
> --- include/opensm/st.h (revision 5436)
> +++ include/opensm/st.h (working copy)
> @@ -40,6 +40,8 @@
> #ifndef ST_INCLUDED
> #define ST_INCLUDED
>
> +#include <stdlib.h>
> +
> #ifdef __cplusplus
> # define BEGIN_C_DECLS extern "C" {
> # define END_C_DECLS }
> @@ -79,11 +81,11 @@ struct st_table {
> enum st_retval {ST_CONTINUE, ST_STOP, ST_DELETE};
>
> st_table *st_init_table(struct st_hash_type *);
> -st_table *st_init_table_with_size(struct st_hash_type *, int);
> +st_table *st_init_table_with_size(struct st_hash_type *, size_t);
> st_table *st_init_numtable(void);
> -st_table *st_init_numtable_with_size(int);
> +st_table *st_init_numtable_with_size(size_t);
> st_table *st_init_strtable(void);
> -st_table *st_init_strtable_with_size(int);
> +st_table *st_init_strtable_with_size(size_t);
> int st_delete(st_table *, st_data_t *, st_data_t *);
> int st_delete_safe(st_table *, st_data_t *, st_data_t *, st_data_t); int st_insert(st_table *, st_data_t, st_data_t);
>
> Index: opensm/st.c
> ===================================================================
> --- opensm/st.c (revision 5436)
> +++ opensm/st.c (working copy)
> @@ -42,7 +42,6 @@
> #endif /* HAVE_CONFIG_H */
>
> #include <stdio.h>
> -#include <stdlib.h>
> #include <string.h>
> #include <opensm/st.h>
>
> @@ -102,17 +101,11 @@ static struct st_hash_type type_strhash
> #define xcalloc calloc
> #define xrealloc realloc
> #define xfree free
> -#if 0
> -void *xmalloc(long);
> -void *xcalloc(long, long);
> -void *xrealloc(void *, long);
> -void xfree(void *);
> -#endif
>
> static void rehash(st_table *);
>
> -#define alloc(type) (type*)xmalloc((unsigned)sizeof(type))
> -#define Calloc(n,s) (char*)xcalloc((n),(s))
> +#define alloc(type) (type*)xmalloc(sizeof(type))
> +#define Calloc(n,s) (char*)xcalloc((n), (s))
>
> #define EQUAL(table,x,y) ((x)==(y) || (*table->type->compare)(((void*)x),((void *)y)) == 0)
>
> @@ -200,7 +193,7 @@ stat_col()
> st_table*
> st_init_table_with_size(type, size)
> struct st_hash_type *type;
> - int size;
> + size_t size;
> {
> st_table *tbl;
>
> @@ -238,7 +231,7 @@ st_init_numtable(void)
>
> st_table*
> st_init_numtable_with_size(size)
> - int size;
> + size_t size;
> {
> return st_init_table_with_size(&type_numhash, size);
> }
> @@ -251,7 +244,7 @@ st_init_strtable(void)
>
> st_table*
> st_init_strtable_with_size(size)
> - int size;
> + size_t size;
> {
> return st_init_table_with_size(&type_strhash, size);
> }
> @@ -314,7 +307,8 @@ st_lookup(table, key, value)
> return 0;
> }
> else {
> - if (value != 0) *value = ptr->record;
> + if (value != 0)
> + *value = ptr->record;
> return 1;
> }
> }
> @@ -407,7 +401,8 @@ st_copy(old_table)
> {
> st_table *new_table;
> st_table_entry *ptr, *entry;
> - int i, num_bins = old_table->num_bins;
> + int i;
> + size_t num_bins = old_table->num_bins;
>
> new_table = alloc(st_table);
> if (new_table == 0)
> @@ -417,7 +412,7 @@ st_copy(old_table)
>
> *new_table = *old_table;
> new_table->bins = (st_table_entry**)
> - Calloc((unsigned)num_bins, sizeof(st_table_entry*));
> + Calloc(num_bins, sizeof(st_table_entry*));
>
> if (new_table->bins == 0)
> {
> @@ -524,7 +519,7 @@ st_delete_safe(table, key, value, never)
> }
>
> static int
> -delete_never( st_data_t key, st_data_t value, st_data_t never)
> +delete_never(st_data_t key, st_data_t value, st_data_t never)
> {
> if (value == never) return ST_DELETE;
> return ST_CONTINUE;
>
>
>
More information about the general
mailing list