cabinet: Revert "cabinet: Fix for FDICopy with an empty cabinet file.".
This reverts commit 33e561f53c
.
Fixed the test that fails on all platforms.
This commit is contained in:
parent
f2189d17b0
commit
fe8c3f9059
|
@ -562,14 +562,9 @@ static BOOL FDI_read_entries(
|
||||||
|
|
||||||
/* get the number of folders */
|
/* get the number of folders */
|
||||||
num_folders = EndGetI16(buf+cfhead_NumFolders);
|
num_folders = EndGetI16(buf+cfhead_NumFolders);
|
||||||
/* if num_folders is 0, it's correct cab, but empty */
|
if (num_folders == 0) {
|
||||||
/* if num_folders is 1, there is no folders in this cab */
|
/* PONDERME: is this really invalid? */
|
||||||
|
WARN("weird cabinet detect failure: no folders in cabinet\n");
|
||||||
/* get the number of files */
|
|
||||||
num_files = EndGetI16(buf+cfhead_NumFiles);
|
|
||||||
if (num_files && !num_folders) {
|
|
||||||
/* If there at least one file in the cabinet. num_folders is always >= 1 */
|
|
||||||
WARN("weird cabinet detect failure: cabinet is not empty, but num_folders = 0\n");
|
|
||||||
if (pmii) {
|
if (pmii) {
|
||||||
PFDI_INT(hfdi)->perf->erfOper = FDIERROR_NOT_A_CABINET;
|
PFDI_INT(hfdi)->perf->erfOper = FDIERROR_NOT_A_CABINET;
|
||||||
PFDI_INT(hfdi)->perf->erfType = 0;
|
PFDI_INT(hfdi)->perf->erfType = 0;
|
||||||
|
@ -577,9 +572,12 @@ static BOOL FDI_read_entries(
|
||||||
}
|
}
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
if (!num_files && num_folders) {
|
|
||||||
/* If cabinet consist of 0 files, num_folders must be 0 */
|
/* get the number of files */
|
||||||
WARN("weird cabinet detect failure: no files in cabinet, but there are folders\n");
|
num_files = EndGetI16(buf+cfhead_NumFiles);
|
||||||
|
if (num_files == 0) {
|
||||||
|
/* PONDERME: is this really invalid? */
|
||||||
|
WARN("weird cabinet detect failure: no files in cabinet\n");
|
||||||
if (pmii) {
|
if (pmii) {
|
||||||
PFDI_INT(hfdi)->perf->erfOper = FDIERROR_NOT_A_CABINET;
|
PFDI_INT(hfdi)->perf->erfOper = FDIERROR_NOT_A_CABINET;
|
||||||
PFDI_INT(hfdi)->perf->erfType = 0;
|
PFDI_INT(hfdi)->perf->erfType = 0;
|
||||||
|
@ -2836,11 +2834,6 @@ BOOL __cdecl FDICopy(
|
||||||
}
|
}
|
||||||
|
|
||||||
/* free decompression temps */
|
/* free decompression temps */
|
||||||
if (!fol) {
|
|
||||||
/* Empty cabinet */
|
|
||||||
PFDI_CLOSE(hfdi, cabhf);
|
|
||||||
return TRUE; /* empty, but correct */
|
|
||||||
}
|
|
||||||
switch (fol->comp_type & cffoldCOMPTYPE_MASK) {
|
switch (fol->comp_type & cffoldCOMPTYPE_MASK) {
|
||||||
case cffoldCOMPTYPE_LZX:
|
case cffoldCOMPTYPE_LZX:
|
||||||
if (LZX(window)) {
|
if (LZX(window)) {
|
||||||
|
|
|
@ -626,8 +626,15 @@ static void test_FDICopy(void)
|
||||||
fdi_write, fdi_close, fdi_seek,
|
fdi_write, fdi_close, fdi_seek,
|
||||||
cpuUNKNOWN, &erf);
|
cpuUNKNOWN, &erf);
|
||||||
|
|
||||||
ret=FDICopy(hfdi, name, path, 0, CopyProgress, NULL, 0);
|
/* cabinet with no files or folders */
|
||||||
ok(ret, "Expected FDICopy to succeed\n");
|
SetLastError(0xdeadbeef);
|
||||||
|
ret = FDICopy(hfdi, name, path, 0, CopyProgress, NULL, 0);
|
||||||
|
ok(ret == FALSE, "Expected FALSE, got %d\n", ret);
|
||||||
|
todo_wine
|
||||||
|
{
|
||||||
|
ok(GetLastError() == ERROR_INVALID_HANDLE,
|
||||||
|
"Expected ERROR_INVALID_HANDLE, got %d\n", GetLastError());
|
||||||
|
}
|
||||||
|
|
||||||
FDIDestroy(hfdi);
|
FDIDestroy(hfdi);
|
||||||
DeleteFileA(name);
|
DeleteFileA(name);
|
||||||
|
|
Loading…
Reference in New Issue