aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/libraries/eina/src/lib/eina_share_common.c
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--libraries/eina/src/lib/eina_share_common.c42
1 files changed, 7 insertions, 35 deletions
diff --git a/libraries/eina/src/lib/eina_share_common.c b/libraries/eina/src/lib/eina_share_common.c
index 90e1868..776e429 100644
--- a/libraries/eina/src/lib/eina_share_common.c
+++ b/libraries/eina/src/lib/eina_share_common.c
@@ -76,7 +76,6 @@
76#include "eina_hash.h" 76#include "eina_hash.h"
77#include "eina_rbtree.h" 77#include "eina_rbtree.h"
78#include "eina_error.h" 78#include "eina_error.h"
79#include "eina_log.h"
80#include "eina_lock.h" 79#include "eina_lock.h"
81 80
82/* undefs EINA_ARG_NONULL() so NULL checks are not compiled out! */ 81/* undefs EINA_ARG_NONULL() so NULL checks are not compiled out! */
@@ -126,8 +125,6 @@ typedef struct _Eina_Share_Common Eina_Share_Common;
126typedef struct _Eina_Share_Common_Node Eina_Share_Common_Node; 125typedef struct _Eina_Share_Common_Node Eina_Share_Common_Node;
127typedef struct _Eina_Share_Common_Head Eina_Share_Common_Head; 126typedef struct _Eina_Share_Common_Head Eina_Share_Common_Head;
128 127
129int _eina_share_common_log_dom = -1;
130
131struct _Eina_Share 128struct _Eina_Share
132{ 129{
133 Eina_Share_Common *share; 130 Eina_Share_Common *share;
@@ -600,28 +597,8 @@ eina_share_common_init(Eina_Share **_share,
600 share = *_share = calloc(sizeof(Eina_Share), 1); 597 share = *_share = calloc(sizeof(Eina_Share), 1);
601 if (!share) goto on_error; 598 if (!share) goto on_error;
602 599
603 if (_eina_share_common_log_dom < 0) /*Only register if not already */
604 _eina_share_common_log_dom = eina_log_domain_register(
605 "eina_share",
606 EINA_LOG_COLOR_DEFAULT);
607
608 if (_eina_share_common_log_dom < 0)
609 {
610 EINA_LOG_ERR("Could not register log domain: eina_share_common");
611 goto on_error;
612 }
613
614 share->share = calloc(1, sizeof(Eina_Share_Common)); 600 share->share = calloc(1, sizeof(Eina_Share_Common));
615 if (!share->share) 601 if (!share->share) goto on_error;
616 {
617 if (_eina_share_common_log_dom > 0)
618 {
619 eina_log_domain_unregister(_eina_share_common_log_dom);
620 _eina_share_common_log_dom = -1;
621 }
622
623 goto on_error;
624 }
625 602
626 share->node_magic = node_magic; 603 share->node_magic = node_magic;
627#define EMS(n) eina_magic_string_static_set(n, n ## _STR) 604#define EMS(n) eina_magic_string_static_set(n, n ## _STR)
@@ -678,11 +655,6 @@ eina_share_common_shutdown(Eina_Share **_share)
678 MAGIC_FREE(share->share); 655 MAGIC_FREE(share->share);
679 656
680 _eina_share_common_population_shutdown(share); 657 _eina_share_common_population_shutdown(share);
681 if (_eina_share_common_log_dom > 0) /* Only free if necessary */
682 {
683 eina_log_domain_unregister(_eina_share_common_log_dom);
684 _eina_share_common_log_dom = -1;
685 }
686 658
687 eina_lock_release(&_mutex_big); 659 eina_lock_release(&_mutex_big);
688 660
@@ -833,7 +805,7 @@ eina_share_common_ref(Eina_Share *share, const char *str)
833} 805}
834 806
835 807
836void 808Eina_Bool
837eina_share_common_del(Eina_Share *share, const char *str) 809eina_share_common_del(Eina_Share *share, const char *str)
838{ 810{
839 unsigned int slen; 811 unsigned int slen;
@@ -843,7 +815,7 @@ eina_share_common_del(Eina_Share *share, const char *str)
843 int hash_num, hash; 815 int hash_num, hash;
844 816
845 if (!str) 817 if (!str)
846 return; 818 return EINA_TRUE;
847 819
848 eina_lock_take(&_mutex_big); 820 eina_lock_take(&_mutex_big);
849 821
@@ -857,7 +829,7 @@ eina_share_common_del(Eina_Share *share, const char *str)
857 { 829 {
858 node->references--; 830 node->references--;
859 eina_lock_release(&_mutex_big); 831 eina_lock_release(&_mutex_big);
860 return; 832 return EINA_TRUE;
861 } 833 }
862 834
863 node->references = 0; 835 node->references = 0;
@@ -871,7 +843,7 @@ eina_share_common_del(Eina_Share *share, const char *str)
871 if (!ed) 843 if (!ed)
872 goto on_error; 844 goto on_error;
873 845
874 EINA_MAGIC_CHECK_SHARE_COMMON_HEAD(ed, eina_lock_release(&_mutex_big)); 846 EINA_MAGIC_CHECK_SHARE_COMMON_HEAD(ed, eina_lock_release(&_mutex_big), EINA_FALSE);
875 847
876 if (!_eina_share_common_head_remove_node(ed, node)) 848 if (!_eina_share_common_head_remove_node(ed, node))
877 goto on_error; 849 goto on_error;
@@ -886,12 +858,12 @@ eina_share_common_del(Eina_Share *share, const char *str)
886 858
887 eina_lock_release(&_mutex_big); 859 eina_lock_release(&_mutex_big);
888 860
889 return; 861 return EINA_TRUE;
890 862
891on_error: 863on_error:
892 eina_lock_release(&_mutex_big); 864 eina_lock_release(&_mutex_big);
893 /* possible segfault happened before here, but... */ 865 /* possible segfault happened before here, but... */
894 CRITICAL("EEEK trying to del non-shared share_common \"%s\"", str); 866 return EINA_FALSE;
895} 867}
896 868
897int 869int