--- pgp/src/zdeflate.c 2018/04/24 16:39:33 1.1.1.3 +++ pgp/src/zdeflate.c 2018/04/24 16:40:25 1.1.1.4 @@ -141,6 +141,7 @@ typedef unsigned IPos; #else uch far * near window = NULL; Pos far * near prev = NULL; + static void far *__window, *__prev; static Pos far * near head; #endif @@ -274,8 +275,8 @@ void lm_init (pack_level, flags) /* Use dynamic allocation if compiler does not like big static arrays: */ #ifdef DYN_ALLOC - window = (uch far*) fcalloc(WSIZE, 2*sizeof(uch)); - prev = (Pos far*) fcalloc(WSIZE, sizeof(Pos)); + __window = window = (uch far*) fcalloc(WSIZE*2*sizeof(uch)+16, 1); + __prev = prev = (Pos far*) fcalloc(WSIZE*sizeof(Pos)+16, 1); head = (Pos far*) fcalloc(HASH_SIZE, sizeof(Pos)); if (window == NULL || prev == NULL || head == NULL) { @@ -326,8 +327,8 @@ void lm_init (pack_level, flags) void lm_free() { #ifdef DYN_ALLOC - free(window); - free(prev); + free(__window); + free(__prev); free(head); window = NULL; prev = head = NULL;