summaryrefslogtreecommitdiffstats
path: root/src/util-streaming-buffer.c
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/util-streaming-buffer.c21
1 files changed, 12 insertions, 9 deletions
diff --git a/src/util-streaming-buffer.c b/src/util-streaming-buffer.c
index 7608b50..6ff4f43 100644
--- a/src/util-streaming-buffer.c
+++ b/src/util-streaming-buffer.c
@@ -842,16 +842,11 @@ static inline void StreamingBufferSlideToOffsetWithRegions(
r = next;
}
SCLogDebug("to_shift %p", to_shift);
- } else {
- to_shift = &sb->region;
- SCLogDebug("shift start region %p", to_shift);
- }
- // this region is main, or will xfer its buffer to main
- if (to_shift) {
- SCLogDebug("main: offset %" PRIu64 " buf %p size %u offset %u", to_shift->stream_offset,
- to_shift->buf, to_shift->buf_size, to_shift->buf_offset);
- if (to_shift != &sb->region) {
+ // this region is main, or will xfer its buffer to main
+ if (to_shift && to_shift != &sb->region) {
+ SCLogDebug("main: offset %" PRIu64 " buf %p size %u offset %u", to_shift->stream_offset,
+ to_shift->buf, to_shift->buf_size, to_shift->buf_offset);
DEBUG_VALIDATE_BUG_ON(sb->region.buf != NULL);
sb->region.buf = to_shift->buf;
@@ -860,12 +855,20 @@ static inline void StreamingBufferSlideToOffsetWithRegions(
sb->region.buf_size = to_shift->buf_size;
sb->region.next = to_shift->next;
+ BUG_ON(to_shift == &sb->region);
FREE(cfg, to_shift, sizeof(*to_shift));
to_shift = &sb->region;
sb->regions--;
DEBUG_VALIDATE_BUG_ON(sb->regions == 0);
}
+ } else {
+ to_shift = &sb->region;
+ SCLogDebug("shift start region %p", to_shift);
+ }
+
+ // this region is main, or will xfer its buffer to main
+ if (to_shift) {
// Do the shift. If new region is exactly at the slide offset we can skip this.
DEBUG_VALIDATE_BUG_ON(to_shift->stream_offset > slide_offset);
const uint32_t s = slide_offset - to_shift->stream_offset;