TDB_DATA this_key, this_val;
+ bool del_old_keyval = false;
+
if (rec_priv->node != NULL) {
/*
*/
rb_erase(&rec_priv->node->rb_node, &rec_priv->db_ctx->tree);
- SAFE_FREE(rec_priv->node);
+ del_old_keyval = true;
}
node = (struct db_rbt_node *)SMB_MALLOC(
+ data.dsize);
if (node == NULL) {
+ if (del_old_keyval) {
+ SAFE_FREE(rec_priv->node);
+ }
return NT_STATUS_NO_MEMORY;
}
rb_link_node(&node->rb_node, parent, p);
rb_insert_color(&node->rb_node, &rec_priv->db_ctx->tree);
+ if (del_old_keyval) {
+ SAFE_FREE(rec_priv->node);
+ }
+
return NT_STATUS_OK;
}