From 09924b54e5cf76a7ce84c01d1126d94632ec8d5a Mon Sep 17 00:00:00 2001 From: Gustavo Sverzut Barbieri Date: Sat, 6 Dec 2008 06:53:14 +0000 Subject: [PATCH] Let valgrind help with EINA_MAGIC. Keep EINA_MAGIC at the end of the structure (WHEN POSSIBLE! Watch out flexible arrays like char str[] at the end!) this way if parts use EINA_MAGIC and others do not, it will possible overflow and valgrind can help us. WARNING: make uninstall before update! Then make clean and make install, check if everything is working with "make check". SVN revision: 37961 --- legacy/eina/src/include/eina_accessor.h | 6 +++--- legacy/eina/src/include/eina_array.h | 4 ++-- legacy/eina/src/include/eina_iterator.h | 6 +++--- legacy/eina/src/include/eina_list.h | 7 +++---- legacy/eina/src/lib/eina_array.c | 8 +++----- legacy/eina/src/lib/eina_list.c | 8 ++++---- legacy/eina/src/lib/eina_rectangle.c | 6 ++---- 7 files changed, 20 insertions(+), 25 deletions(-) diff --git a/legacy/eina/src/include/eina_accessor.h b/legacy/eina/src/include/eina_accessor.h index e08555ab6e..c4a265eeee 100644 --- a/legacy/eina/src/include/eina_accessor.h +++ b/legacy/eina/src/include/eina_accessor.h @@ -40,12 +40,12 @@ typedef void (*Eina_Accessor_Free_Callback)(Eina_Accessor *it); struct _Eina_Accessor { -#define EINA_MAGIC_ACCESSOR 0x98761232 - EINA_MAGIC; - Eina_Accessor_Get_At_Callback get_at; Eina_Accessor_Get_Container_Callback get_container; Eina_Accessor_Free_Callback free; + +#define EINA_MAGIC_ACCESSOR 0x98761232 + EINA_MAGIC; }; #define FUNC_ACCESSOR_GET_AT(Function) ((Eina_Accessor_Get_At_Callback)Function) diff --git a/legacy/eina/src/include/eina_array.h b/legacy/eina/src/include/eina_array.h index 1e9ed8c490..2de8f47529 100644 --- a/legacy/eina/src/include/eina_array.h +++ b/legacy/eina/src/include/eina_array.h @@ -65,12 +65,12 @@ typedef void **Eina_Array_Iterator; */ struct _Eina_Array { - EINA_MAGIC; - void **data; /**< Pointer to a vector of pointer to payload */ unsigned int total; /**< Total number of slot in the vector */ unsigned int count; /**< Number of activ slot in the vector */ unsigned int step; /**< How much must we grow the vector when it is full */ + + EINA_MAGIC; }; EAPI int eina_array_init (void); diff --git a/legacy/eina/src/include/eina_iterator.h b/legacy/eina/src/include/eina_iterator.h index 7b5bfb92b0..6aedb7f6f4 100644 --- a/legacy/eina/src/include/eina_iterator.h +++ b/legacy/eina/src/include/eina_iterator.h @@ -40,12 +40,12 @@ typedef void (*Eina_Iterator_Free_Callback)(Eina_Iterator *it); struct _Eina_Iterator { -#define EINA_MAGIC_ITERATOR 0x98761233 - EINA_MAGIC; - Eina_Iterator_Next_Callback next; Eina_Iterator_Get_Container_Callback get_container; Eina_Iterator_Free_Callback free; + +#define EINA_MAGIC_ITERATOR 0x98761233 + EINA_MAGIC; }; diff --git a/legacy/eina/src/include/eina_list.h b/legacy/eina/src/include/eina_list.h index c966171dd4..520179d50b 100644 --- a/legacy/eina/src/include/eina_list.h +++ b/legacy/eina/src/include/eina_list.h @@ -60,20 +60,19 @@ typedef struct _Eina_List_Accounting Eina_List_Accounting; */ struct _Eina_List /** A linked list node */ { - EINA_MAGIC; - void *data; /**< Pointer to list element payload */ Eina_List *next; /**< Next member in the list */ Eina_List *prev; /**< Previous member in the list */ struct _Eina_List_Accounting *accounting; /**< Private list accounting info - don't touch */ + + EINA_MAGIC; }; struct _Eina_List_Accounting { - EINA_MAGIC; - Eina_List *last; unsigned int count; + EINA_MAGIC; }; diff --git a/legacy/eina/src/lib/eina_array.c b/legacy/eina/src/lib/eina_array.c index f99a996b0e..5932ea936f 100644 --- a/legacy/eina/src/lib/eina_array.c +++ b/legacy/eina/src/lib/eina_array.c @@ -72,20 +72,18 @@ struct _Eina_Iterator_Array { Eina_Iterator iterator; - EINA_MAGIC; - const Eina_Array *array; unsigned int index; + + EINA_MAGIC; }; typedef struct _Eina_Accessor_Array Eina_Accessor_Array; struct _Eina_Accessor_Array { Eina_Accessor accessor; - - EINA_MAGIC; - const Eina_Array *array; + EINA_MAGIC; }; static int _eina_array_init_count = 0; diff --git a/legacy/eina/src/lib/eina_list.c b/legacy/eina/src/lib/eina_list.c index 0b1c8bfccb..d82afedc74 100644 --- a/legacy/eina/src/lib/eina_list.c +++ b/legacy/eina/src/lib/eina_list.c @@ -118,22 +118,22 @@ struct _Eina_Iterator_List { Eina_Iterator iterator; - EINA_MAGIC; - const Eina_List *head; const Eina_List *current; + + EINA_MAGIC; }; struct _Eina_Accessor_List { Eina_Accessor accessor; - EINA_MAGIC; - const Eina_List *head; const Eina_List *current; unsigned int index; + + EINA_MAGIC; }; static int _eina_list_init_count = 0; diff --git a/legacy/eina/src/lib/eina_rectangle.c b/legacy/eina/src/lib/eina_rectangle.c index 62da094d35..16f490a078 100644 --- a/legacy/eina/src/lib/eina_rectangle.c +++ b/legacy/eina/src/lib/eina_rectangle.c @@ -42,22 +42,20 @@ typedef struct _Eina_Rectangle_Alloc Eina_Rectangle_Alloc; struct _Eina_Rectangle_Pool { - EINA_MAGIC; - Eina_Inlist *head; void *data; unsigned int references; int w; int h; + EINA_MAGIC; }; struct _Eina_Rectangle_Alloc { EINA_INLIST; - EINA_MAGIC; - Eina_Rectangle_Pool *pool; + EINA_MAGIC; }; #define EINA_MAGIC_CHECK_RECTANGLE_POOL(d) \