}
sbb->offset = sb->region.stream_offset;
sbb->len = sb->region.buf_offset;
+ (void)SBB_RB_INSERT(&sb->sbb_tree, sbb);
+ sb->head = sbb;
+ sb->sbb_size = sbb->len;
StreamingBufferBlock *sbb2 = CALLOC(cfg, 1, sizeof(*sbb2));
if (sbb2 == NULL) {
- FREE(cfg, sbb, sizeof(*sbb));
return -1;
}
sbb2->offset = region->stream_offset + rel_offset;
sbb2->len = data_len;
-
- sb->head = sbb;
- sb->sbb_size = sbb->len + sbb2->len;
- SBB_RB_INSERT(&sb->sbb_tree, sbb);
- SBB_RB_INSERT(&sb->sbb_tree, sbb2);
-
+ DEBUG_VALIDATE_BUG_ON(sbb2->offset < sbb->len);
SCLogDebug("sbb1 %" PRIu64 ", len %u, sbb2 %" PRIu64 ", len %u", sbb->offset, sbb->len,
sbb2->offset, sbb2->len);
+
+ sb->sbb_size += sbb2->len;
+ if (SBB_RB_INSERT(&sb->sbb_tree, sbb2) != NULL) {
+ FREE(cfg, sbb2, sizeof(*sbb2));
+ return -1;
+ }
+
#ifdef DEBUG
SBBPrintList(sb);
#endif
- BUG_ON(sbb2->offset < sbb->len);
return 0;
}
sb->head = sbb;
sb->sbb_size = sbb->len;
- SBB_RB_INSERT(&sb->sbb_tree, sbb);
+ (void)SBB_RB_INSERT(&sb->sbb_tree, sbb);
SCLogDebug("sbb %" PRIu64 ", len %u", sbb->offset, sbb->len);
#ifdef DEBUG