assert(scratch);
char *state = getMultiState(stream_state);
-
- u8 broken = getBroken(state);
- if (unlikely(broken)) {
- assert(broken == BROKEN_FROM_USER || broken == BROKEN_EXHAUSTED);
- scratch->core_info.broken = broken;
- return;
- }
+ assert(!getBroken(state));
DEBUG_PRINTF("::: streaming rose ::: offset = %llu len = %zu\n",
stream_state->offset, scratch->core_info.len);
assert(scratch);
char *state = getMultiState(stream_state);
-
- u8 broken = getBroken(state);
- if (unlikely(broken)) {
- assert(broken == BROKEN_FROM_USER || broken == BROKEN_EXHAUSTED);
- scratch->core_info.broken = broken;
- return;
- }
+ assert(!getBroken(state));
const struct RoseEngine *rose = stream_state->rose;
const struct HWLM *ftable = getFLiteralMatcher(rose);
if (!id->offset && rose->boundary.reportZeroOffset) {
DEBUG_PRINTF("zero reports\n");
processReportList(rose, rose->boundary.reportZeroOffset, 0, scratch);
+ broken = getBroken(state);
+ if (unlikely(broken)) {
+ DEBUG_PRINTF("stream is broken, halting scan\n");
+ if (broken == BROKEN_FROM_USER) {
+ return HS_SCAN_TERMINATED;
+ } else {
+ assert(broken == BROKEN_EXHAUSTED);
+ return HS_SUCCESS;
+ }
+ }
}
switch (rose->runtimeImpl) {