breedline: avoid strdup as a struct member name.
authorKrisztian Litkey <krisztian.litkey@intel.com>
Tue, 27 Nov 2012 07:54:45 +0000 (09:54 +0200)
committerKrisztian Litkey <krisztian.litkey@intel.com>
Tue, 27 Nov 2012 07:54:45 +0000 (09:54 +0200)
When compiling with sufficient optimization knobs, gcc/glibc turns
strdup into a macro, breaking all references to similarly named
struct and union members.

src/breedline/breedline-murphy.c
src/breedline/breedline.c
src/breedline/breedline.h
src/breedline/mm.h

index b72f170..a50a1b8 100644 (file)
@@ -63,10 +63,10 @@ static void del_watch(void *wp)
 
 
 static brl_allocator_t allocator = {
-    .alloc   = mrp_mm_alloc,
-    .realloc = mrp_mm_realloc,
-    .strdup  = mrp_mm_strdup,
-    .free    = mrp_mm_free
+    .allocfn   = mrp_mm_alloc,
+    .reallocfn = mrp_mm_realloc,
+    .strdupfn  = mrp_mm_strdup,
+    .freefn    = mrp_mm_free
 };
 
 
index a9d7cd7..68c5599 100644 (file)
@@ -1235,10 +1235,10 @@ static void _brl_default_free(void *ptr,
 
 /* By default we use the libc memory allocator. */
 brl_allocator_t __brl_mm = {
-    .alloc   = _brl_default_alloc,
-    .realloc = _brl_default_realloc,
-    .strdup  = _brl_default_strdup,
-    .free    = _brl_default_free
+    .allocfn   = _brl_default_alloc,
+    .reallocfn = _brl_default_realloc,
+    .strdupfn  = _brl_default_strdup,
+    .freefn    = _brl_default_free
 };
 
 /* Once an allocation is done, this will block changing the allocator. */
index 3b0cc46..7e0e851 100644 (file)
@@ -53,12 +53,12 @@ int brl_use_mainloop(brl_t *brl, void *ml, brl_mainloop_ops_t *ops,
 
 /** Memory allocation operations. */
 typedef struct {
-    void *(*alloc)(size_t size, const char *file, int line, const char *func);
-    void *(*realloc)(void *ptr, size_t size, const char *file, int line,
-                     const char *func);
-    char *(*strdup)(const char *str, const char *file, int line,
-                    const char *func);
-    void  (*free)(void *ptr, const char *file, int line, const char *func);
+    void *(*allocfn)(size_t size, const char *file, int line, const char *func);
+    void *(*reallocfn)(void *ptr, size_t size, const char *file, int line,
+                       const char *func);
+    char *(*strdupfn)(const char *str, const char *file, int line,
+                      const char *func);
+    void  (*freefn)(void *ptr, const char *file, int line, const char *func);
 } brl_allocator_t;
 
 /** Override the default memory allocator. */
index dd52789..7339d4a 100644 (file)
@@ -8,15 +8,15 @@
 #define BRL_LOC __FILE__, __LINE__, __func__
 
 /* Memory allocation macros used by breedline. */
-#define brl_allocz(size) ({                                      \
-            void   *_ptr;                                        \
-            size_t  _size = size;                                \
-                                                                 \
-            if ((_ptr = __brl_mm.alloc(_size, BRL_LOC)) != NULL) \
-                memset(_ptr, 0, _size);                          \
-                                                                 \
-            __brl_mm_busy = TRUE;                                \
-                                                                 \
+#define brl_allocz(size) ({                                        \
+            void   *_ptr;                                          \
+            size_t  _size = size;                                  \
+                                                                   \
+            if ((_ptr = __brl_mm.allocfn(_size, BRL_LOC)) != NULL) \
+                memset(_ptr, 0, _size);                            \
+                                                                   \
+            __brl_mm_busy = TRUE;                                  \
+                                                                   \
             _ptr; })
 
 #define brl_reallocz(ptr, o, n) ({                               \
@@ -30,7 +30,7 @@
             else                                                 \
                 _o = 0;                                          \
                                                                  \
-            _ptr = __brl_mm.realloc(ptr, _size, BRL_LOC);        \
+            _ptr = __brl_mm.reallocfn(ptr, _size, BRL_LOC);      \
             if (_ptr != NULL || _n == 0) {                       \
                 if ((unsigned)(_n) > (unsigned)(_o))             \
                     memset(_ptr + (_o), 0,                       \
 #define brl_strdup(s) ({                                         \
             __brl_mm_busy = TRUE;                                \
                                                                  \
-            __brl_mm.strdup((s), BRL_LOC);                       \
+            __brl_mm.strdupfn((s), BRL_LOC);                     \
         })
 
-#define brl_free(ptr) __brl_mm.free((ptr), BRL_LOC)
+#define brl_free(ptr) __brl_mm.freefn((ptr), BRL_LOC)
 
 extern brl_allocator_t __brl_mm;
 extern int __brl_mm_busy;