}
if (attachDict) {
- DEBUGLOG(4, "attaching dictionary into context");
- cctx->blockState.matchState.dictMatchState = &cdict->matchState;
-
- /* prep working match state so dict matches never have negative indices
- * when they are translated to the working context's index space. */
- if (cctx->blockState.matchState.window.dictLimit <
- (U32)(cdict->matchState.window.nextSrc - cdict->matchState.window.base)) {
- cctx->blockState.matchState.window.nextSrc =
- cctx->blockState.matchState.window.base +
- ( cdict->matchState.window.nextSrc
- - cdict->matchState.window.base);
- ZSTD_window_clear(&cctx->blockState.matchState.window);
+ if (cdict->matchState.window.nextSrc - cdict->matchState.window.base == 0) {
+ /* don't even attach dictionaries with no contents */
+ DEBUGLOG(4, "skipping attaching empty dictionary");
+ } else {
+ DEBUGLOG(4, "attaching dictionary into context");
+ cctx->blockState.matchState.dictMatchState = &cdict->matchState;
+
+ /* prep working match state so dict matches never have negative indices
+ * when they are translated to the working context's index space. */
+ if (cctx->blockState.matchState.window.dictLimit <
+ (U32)(cdict->matchState.window.nextSrc - cdict->matchState.window.base)) {
+ cctx->blockState.matchState.window.nextSrc =
+ cctx->blockState.matchState.window.base +
+ ( cdict->matchState.window.nextSrc
+ - cdict->matchState.window.base);
+ ZSTD_window_clear(&cctx->blockState.matchState.window);
+ }
+ cctx->blockState.matchState.loadedDictEnd = cctx->blockState.matchState.window.dictLimit;
}
- cctx->blockState.matchState.loadedDictEnd = cctx->blockState.matchState.window.dictLimit;
} else {
DEBUGLOG(4, "copying dictionary into context");
/* copy tables */