/* map: (struct private_bcb *)privbcb -> (struct private_bcb *)privbcb */
static GTree *private_bcb_lsn_tree;
+/* Such debugging messages are too much expensive.
+ * Use to track for deallocated privbcb-s/PublicBcb-s.
+ */
+/* #define DEBUG_PRIVATE_BCB_LSN_TREE_KEY_COMPARE_FUNC 1 */
+
/* Although 'private_bcb_lsn_tree' contains only nodes with 'lsn_valid' TRUE
* compare_func cannot expect such arguments as it may be used to lookup
* privbcb unlisted in 'private_bcb_lsn_tree'.
gint64 a_lsn,b_lsn;
gint r;
+#ifdef DEBUG_PRIVATE_BCB_LSN_TREE_KEY_COMPARE_FUNC
g_log(G_LOG_DOMAIN,G_LOG_LEVEL_DEBUG,"%s: privbcb a=%p,privbcb b=%p",G_STRLOC,a,b);
g_log(G_LOG_DOMAIN,G_LOG_LEVEL_DEBUG,"%s: privbcb a->PublicBcb=%p",G_STRLOC,a->PublicBcb);
g_log(G_LOG_DOMAIN,G_LOG_LEVEL_DEBUG,"%s: privbcb b->PublicBcb=%p",G_STRLOC,b->PublicBcb);
g_log(G_LOG_DOMAIN,G_LOG_LEVEL_DEBUG,"%s: privbcb a->PublicBcb->MappedLength=%u",G_STRLOC,(unsigned)a->PublicBcb->MappedLength);
g_log(G_LOG_DOMAIN,G_LOG_LEVEL_DEBUG,"%s: privbcb b->PublicBcb->MappedLength=%u",G_STRLOC,(unsigned)b->PublicBcb->MappedLength);
+#endif
g_return_val_if_fail(a!=NULL,0);
g_return_val_if_fail(validate_Bcb(a->PublicBcb),0);
g_assert(!b->lsn_valid || b->lsn.QuadPart!=(LONGLONG)G_MAXINT64); /* Forbid defined LSN as G_MAXINT64 */
if (a==b) { /* LSN would be apparently the same in such case :-) */
+#ifdef DEBUG_PRIVATE_BCB_LSN_TREE_KEY_COMPARE_FUNC
g_log(G_LOG_DOMAIN,G_LOG_LEVEL_DEBUG,"%s: return 0 (a==b)",G_STRLOC);
+#endif
return 0;
}
g_assert(a_lsn==(LONGLONG)G_MAXINT64 || a_lsn!=b_lsn);
if ((r=(a_lsn>b_lsn)-(a_lsn<b_lsn))) {
+#ifdef DEBUG_PRIVATE_BCB_LSN_TREE_KEY_COMPARE_FUNC
g_log(G_LOG_DOMAIN,G_LOG_LEVEL_DEBUG,"%s: return %d (lsn !=)",G_STRLOC,r);
+#endif
return r;
}
+#ifdef DEBUG_PRIVATE_BCB_LSN_TREE_KEY_COMPARE_FUNC
g_log(G_LOG_DOMAIN,G_LOG_LEVEL_DEBUG,"%s: return (ptr !=)",G_STRLOC);
+#endif
return (a>b)-(a<b);
}