aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/libstat/tokenizers/osb.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/libstat/tokenizers/osb.c b/src/libstat/tokenizers/osb.c
index 6be660b41..f0e351bb5 100644
--- a/src/libstat/tokenizers/osb.c
+++ b/src/libstat/tokenizers/osb.c
@@ -290,7 +290,11 @@ rspamd_tokenizer_osb (struct rspamd_stat_ctx *ctx,
}
hashpipe = g_alloca (window_size * sizeof (hashpipe[0]));
- memset (hashpipe, 0xfe, window_size * sizeof (hashpipe[0]));
+ for (i = 0; i < window_size; i++) {
+ hashpipe[i].h = 0xfe;
+ hashpipe[i].t = NULL;
+ }
+
token_size = sizeof (rspamd_token_t) +
sizeof (gdouble) * ctx->statfiles->len;
g_assert (token_size > 0);
@@ -364,8 +368,9 @@ rspamd_tokenizer_osb (struct rspamd_stat_ctx *ctx,
}
}
- if (processed <= window_size) {
- memmove (hashpipe, &hashpipe[window_size - processed + 1],
+ if (processed > 1 && processed <= window_size) {
+ processed --;
+ memmove (hashpipe, &hashpipe[window_size - processed],
processed * sizeof (hashpipe[0]));
for (i = 1; i < processed; i++) {