From 928de05e67c102fbfe41acb7bc933ba10e2d665d Mon Sep 17 00:00:00 2001 From: barbieri Date: Fri, 4 Sep 2009 02:03:46 +0000 Subject: [PATCH] loggify stringshare, with extensive debug. note that one can turn per module debug, for example: EINA_LOG_LEVEL=4 EINA_LOG_LEVELS=eina_stringshare:0 ./bla will enable level 4 (debug) for all modules except eina_stringshare that is forced to 0 (just critical messages). git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/eina@42224 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33 --- src/lib/eina_stringshare.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/lib/eina_stringshare.c b/src/lib/eina_stringshare.c index 99a7988..e13f1a5 100644 --- a/src/lib/eina_stringshare.c +++ b/src/lib/eina_stringshare.c @@ -957,6 +957,7 @@ eina_stringshare_add_length(const char *str, unsigned int slen) Eina_Stringshare_Node *el; int hash_num, hash; + DBG("str=%p (%.*s), slen=%u", str, slen, str ? str : "", slen); if (!str) return NULL; _eina_stringshare_population_add(slen); @@ -964,7 +965,7 @@ eina_stringshare_add_length(const char *str, unsigned int slen) if (slen == 0) return ""; else if (slen == 1) - return _eina_stringshare_single + ((*str) << 1); + return (const char *)_eina_stringshare_single + ((*str) << 1); else if (slen < 4) return _eina_stringshare_small_add(str, slen); @@ -1064,6 +1065,7 @@ eina_stringshare_ref(const char *str) Eina_Stringshare_Node *node; int slen; + DBG("str=%p (%s)", str, str ? str : ""); if (!str) return NULL; /* special cases */ @@ -1086,6 +1088,7 @@ eina_stringshare_ref(const char *str) node = _eina_stringshare_node_from_str(str); node->references++; + DBG("str=%p (%s) refs=%u", str, str, node->references); _eina_stringshare_population_add(node->length); @@ -1114,6 +1117,7 @@ eina_stringshare_del(const char *str) Eina_Stringshare_Node *node; int hash_num, slen, hash; + DBG("str=%p (%s)", str, str ? str : ""); if (!str) return; /* special cases */ @@ -1137,9 +1141,11 @@ eina_stringshare_del(const char *str) if (node->references > 1) { node->references--; + DBG("str=%p (%s) refs=%u", str, str, node->references); return; } + DBG("str=%p (%s) refs=0, delete.", str, str); node->references = 0; slen = node->length; -- 2.7.4