diff --git a/reactos/dll/win32/cabinet/fci.c b/reactos/dll/win32/cabinet/fci.c index 112c06b1107..b5e6c9c23f6 100644 --- a/reactos/dll/win32/cabinet/fci.c +++ b/reactos/dll/win32/cabinet/fci.c @@ -173,7 +173,11 @@ HFCI __cdecl FCICreate( int err; PFCI_Int p_fci_internal; - if ((!perf) || (!pfnalloc) || (!pfnfree) || (!pfnopen) || (!pfnread) || + if (!perf) { + SetLastError(ERROR_BAD_ARGUMENTS); + return NULL; + } + if ((!pfnalloc) || (!pfnfree) || (!pfnopen) || (!pfnread) || (!pfnwrite) || (!pfnclose) || (!pfnseek) || (!pfndelete) || (!pfnfcigtf) || (!pccab)) { perf->erfOper = FCIERR_NONE; diff --git a/reactos/dll/win32/cabinet/fdi.c b/reactos/dll/win32/cabinet/fdi.c index cb589491d51..01203b6e462 100644 --- a/reactos/dll/win32/cabinet/fdi.c +++ b/reactos/dll/win32/cabinet/fdi.c @@ -446,7 +446,7 @@ static char *FDI_read_string(HFDI hfdi, INT_PTR hf, long cabsize) unsigned int i; cab_UBYTE *buf = NULL; - TRACE("(hfdi == ^%p, hf == %d)\n", hfdi, hf); + TRACE("(hfdi == ^%p, hf == %ld)\n", hfdi, hf); do { if (len > maxlen) len = maxlen; @@ -501,7 +501,7 @@ static BOOL FDI_read_entries( cab_UBYTE buf[64], block_resv; char *prevname = NULL, *previnfo = NULL, *nextname = NULL, *nextinfo = NULL; - TRACE("(hfdi == ^%p, hf == %d, pfdici == ^%p)\n", hfdi, hf, pfdici); + TRACE("(hfdi == ^%p, hf == %ld, pfdici == ^%p)\n", hfdi, hf, pfdici); /* * FIXME: I just noticed that I am memorizing the initial file pointer @@ -757,7 +757,7 @@ BOOL __cdecl FDIIsCabinet( { BOOL rv; - TRACE("(hfdi == ^%p, hf == ^%d, pfdici == ^%p)\n", hfdi, hf, pfdici); + TRACE("(hfdi == ^%p, hf == ^%ld, pfdici == ^%p)\n", hfdi, hf, pfdici); if (!REALLY_IS_FDI(hfdi)) { ERR("REALLY_IS_FDI failed on ^%p\n", hfdi); @@ -2690,6 +2690,7 @@ BOOL __cdecl FDICopy( PFDI_INT(hfdi)->perf->erfOper = FDIERROR_USER_ABORT; PFDI_INT(hfdi)->perf->erfType = 0; PFDI_INT(hfdi)->perf->fError = TRUE; + filehf = 0; goto bail_and_fail; } }