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 ...@@ -2258,6 +2258,25 @@ static int fdi_decomp(const struct fdi_file *fi, int savemode, fdi_decomp_state
return DECR_OK; 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) * FDICopy (CABINET.22)
* *
...@@ -2839,21 +2858,7 @@ BOOL __cdecl FDICopy( ...@@ -2839,21 +2858,7 @@ BOOL __cdecl FDICopy(
} }
} }
/* free decompression temps */ free_decompression_temps(hfdi, fol, 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;
}
while (decomp_state) { while (decomp_state) {
fdi_decomp_state *prev_fds; fdi_decomp_state *prev_fds;
...@@ -2887,21 +2892,7 @@ BOOL __cdecl FDICopy( ...@@ -2887,21 +2892,7 @@ BOOL __cdecl FDICopy(
bail_and_fail: /* here we free ram before error returns */ bail_and_fail: /* here we free ram before error returns */
/* free decompression temps */ free_decompression_temps(hfdi, fol, 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;
}
if (filehf) PFDI_CLOSE(hfdi, filehf); 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