fix llvm report in eina_stringshare
authorcaro <caro>
Wed, 25 Mar 2009 10:32:33 +0000 (10:32 +0000)
committercaro <caro@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Wed, 25 Mar 2009 10:32:33 +0000 (10:32 +0000)
git-svn-id: http://svn.enlightenment.org/svn/e/trunk/eina@39707 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

src/lib/eina_stringshare.c

index a7bc6a2..529d0d8 100644 (file)
 #define EINA_STRINGSHARE_BUCKETS 256
 #define EINA_STRINGSHARE_MASK 0xFF
 
-#define EINA_MAGIC_CHECK_STRINGSHARE_HEAD(d)                   \
+#define EINA_MAGIC_CHECK_STRINGSHARE_HEAD(d, ...)              \
   do {                                                         \
     if (!EINA_MAGIC_CHECK((d), EINA_MAGIC_STRINGSHARE_HEAD))   \
-      EINA_MAGIC_FAIL((d), EINA_MAGIC_STRINGSHARE_HEAD);       \
+    {                                                          \
+        EINA_MAGIC_FAIL((d), EINA_MAGIC_STRINGSHARE_HEAD);     \
+        return __VA_ARGS__;                                    \
+    }                                                          \
   } while (0);
 
 #define EINA_MAGIC_CHECK_STRINGSHARE_NODE(d)                   \
@@ -305,7 +308,7 @@ static void _eina_stringshare_population_head_del(__UNUSED__ Eina_Stringshare_He
 static int
 _eina_stringshare_cmp(const Eina_Stringshare_Head *ed, const int *hash, __UNUSED__ int length, __UNUSED__ void *data)
 {
-   EINA_MAGIC_CHECK_STRINGSHARE_HEAD(ed);
+   EINA_MAGIC_CHECK_STRINGSHARE_HEAD(ed, 0);
 
    return ed->hash - *hash;
 }
@@ -313,8 +316,8 @@ _eina_stringshare_cmp(const Eina_Stringshare_Head *ed, const int *hash, __UNUSED
 static Eina_Rbtree_Direction
 _eina_stringshare_node(const Eina_Stringshare_Head *left, const Eina_Stringshare_Head *right, __UNUSED__ void *data)
 {
-   EINA_MAGIC_CHECK_STRINGSHARE_HEAD(left);
-   EINA_MAGIC_CHECK_STRINGSHARE_HEAD(right);
+   EINA_MAGIC_CHECK_STRINGSHARE_HEAD(left, 0);
+   EINA_MAGIC_CHECK_STRINGSHARE_HEAD(right, 0);
 
    if (left->hash - right->hash < 0)
      return EINA_RBTREE_LEFT;
@@ -929,7 +932,7 @@ eina_stringshare_add(const char *str)
    if (!ed)
      return _eina_stringshare_add_head(p_bucket, hash, str, slen);
 
-   EINA_MAGIC_CHECK_STRINGSHARE_HEAD(ed);
+   EINA_MAGIC_CHECK_STRINGSHARE_HEAD(ed, NULL);
 
    el = _eina_stringshare_head_find(ed, str, slen);
    if (el)