Commit 70cfa0c3 authored by Juan Lang's avatar Juan Lang Committed by Alexandre Julliard

cabinet: Use helper function to remove duplicate code.

parent 6bdfc2fa
......@@ -2258,6 +2258,25 @@ static int fdi_decomp(const struct fdi_file *fi, int savemode, fdi_decomp_state
return DECR_OK;
}
static void free_decompression_temps(HFDI hfdi, struct fdi_folder *fol,
fdi_decomp_state *decomp_state)
{
switch (fol->comp_type & cffoldCOMPTYPE_MASK) {
case cffoldCOMPTYPE_LZX:
if (LZX(window)) {
PFDI_FREE(hfdi, LZX(window));
LZX(window) = NULL;
}
break;
case cffoldCOMPTYPE_QUANTUM:
if (QTM(window)) {
PFDI_FREE(hfdi, QTM(window));
QTM(window) = NULL;
}
break;
}
}
/***********************************************************************
* FDICopy (CABINET.22)
*
......@@ -2839,21 +2858,7 @@ BOOL __cdecl FDICopy(
}
}
/* free decompression temps */
switch (fol->comp_type & cffoldCOMPTYPE_MASK) {
case cffoldCOMPTYPE_LZX:
if (LZX(window)) {
PFDI_FREE(hfdi, LZX(window));
LZX(window) = NULL;
}
break;
case cffoldCOMPTYPE_QUANTUM:
if (QTM(window)) {
PFDI_FREE(hfdi, QTM(window));
QTM(window) = NULL;
}
break;
}
free_decompression_temps(hfdi, fol, decomp_state);
while (decomp_state) {
fdi_decomp_state *prev_fds;
......@@ -2887,21 +2892,7 @@ BOOL __cdecl FDICopy(
bail_and_fail: /* here we free ram before error returns */
/* free decompression temps */
switch (fol->comp_type & cffoldCOMPTYPE_MASK) {
case cffoldCOMPTYPE_LZX:
if (LZX(window)) {
PFDI_FREE(hfdi, LZX(window));
LZX(window) = NULL;
}
break;
case cffoldCOMPTYPE_QUANTUM:
if (QTM(window)) {
PFDI_FREE(hfdi, QTM(window));
QTM(window) = NULL;
}
break;
}
free_decompression_temps(hfdi, fol, decomp_state);
if (filehf) PFDI_CLOSE(hfdi, filehf);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment