Module: wine Branch: master Commit: 3dc669ffb5a2005f5cb47a1ddac66227ae63f678 URL: http://source.winehq.org/git/wine.git/?a=commit;h=3dc669ffb5a2005f5cb47a1dda...
Author: Alexandre Julliard julliard@winehq.org Date: Sat Feb 19 12:50:09 2011 +0100
cabinet: Fix the remaining todo_wine tests in fdi.c.
---
dlls/cabinet/fci.c | 2 +- dlls/cabinet/fdi.c | 35 ++++++----------------------------- dlls/cabinet/tests/fdi.c | 20 ++++++-------------- 3 files changed, 13 insertions(+), 44 deletions(-)
diff --git a/dlls/cabinet/fci.c b/dlls/cabinet/fci.c index 997760a..9ec1bdd 100644 --- a/dlls/cabinet/fci.c +++ b/dlls/cabinet/fci.c @@ -672,7 +672,7 @@ static BOOL write_cabinet( FCI_Int *fci, PFNFCISTATUS status_callback ) cfheader->cFiles = fci_endian_uword( fci->cFiles ); cfheader->flags = fci_endian_uword( flags ); cfheader->setID = fci_endian_uword( fci->ccab.setID ); - cfheader->iCabinet = fci_endian_uword( fci->ccab.iCab - 1 ); + cfheader->iCabinet = fci_endian_uword( fci->ccab.iCab ); ptr = (char *)(cfheader + 1);
if (flags & cfheadRESERVE_PRESENT) diff --git a/dlls/cabinet/fdi.c b/dlls/cabinet/fdi.c index b5dc29d..27a969b 100644 --- a/dlls/cabinet/fdi.c +++ b/dlls/cabinet/fdi.c @@ -436,10 +436,8 @@ HFDI __cdecl FDICreate(
if (!((fdi = pfnalloc(sizeof(FDI_Int))))) { perf->erfOper = FDIERROR_ALLOC_FAIL; - perf->erfType = ERROR_NOT_ENOUGH_MEMORY; + perf->erfType = 0; perf->fError = TRUE; - - SetLastError(ERROR_NOT_ENOUGH_MEMORY); return NULL; }
@@ -603,21 +601,9 @@ static BOOL FDI_read_entries(
/* get the number of folders */ num_folders = EndGetI16(buf+cfhead_NumFolders); - if (num_folders == 0) { - /* PONDERME: is this really invalid? */ - WARN("weird cabinet detect failure: no folders in cabinet\n"); - if (pmii) set_error( fdi, FDIERROR_NOT_A_CABINET, 0 ); - return FALSE; - }
/* get the number of files */ 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) set_error( fdi, FDIERROR_NOT_A_CABINET, 0 ); - return FALSE; - }
/* setid */ setid = EndGetI16(buf+cfhead_SetID); @@ -2284,8 +2270,7 @@ static void free_decompression_temps(FDI_Int *fdi, const struct fdi_folder *fol, } }
-static void free_decompression_mem(FDI_Int *fdi, - fdi_decomp_state *decomp_state, struct fdi_file *file) +static void free_decompression_mem(FDI_Int *fdi, fdi_decomp_state *decomp_state) { struct fdi_folder *fol; while (decomp_state) { @@ -2305,7 +2290,7 @@ static void free_decompression_mem(FDI_Int *fdi, fdi->free(fol); } while (CAB(firstfile)) { - file = CAB(firstfile); + struct fdi_file *file = CAB(firstfile); if (file->filename) fdi->free(file->filename); CAB(firstfile) = CAB(firstfile)->next; fdi->free(file); @@ -2531,7 +2516,6 @@ BOOL __cdecl FDICopy( idx = 0; if (pathlen) { for (i = 0; i < pathlen; i++) fullpath[idx++] = pszCabPath[i]; - if (fullpath[idx - 1] != '\') fullpath[idx++] = '\'; } if (filenamelen) for (i = 0; i < filenamelen; i++) fullpath[idx++] = pszCabinet[i]; fullpath[idx] = '\0'; @@ -2547,13 +2531,6 @@ BOOL __cdecl FDICopy( return FALSE; }
- if (cabhf == 0) { - ERR("PFDI_OPEN returned zero for %s.\n", fullpath); - fdi->free(decomp_state); - set_error( fdi, FDIERROR_CABINET_NOT_FOUND, ERROR_FILE_NOT_FOUND ); - return FALSE; - } - /* check if it's really a cabfile. Note that this doesn't implement the bug */ if (!FDI_read_entries(fdi, cabhf, &fdici, &(CAB(mii)))) { ERR("FDIIsCabinet failed.\n"); @@ -2859,8 +2836,8 @@ BOOL __cdecl FDICopy( } }
- free_decompression_temps(fdi, fol, decomp_state); - free_decompression_mem(fdi, decomp_state, file); + if (fol) free_decompression_temps(fdi, fol, decomp_state); + free_decompression_mem(fdi, decomp_state);
return TRUE;
@@ -2870,7 +2847,7 @@ BOOL __cdecl FDICopy(
if (filehf) fdi->close(filehf);
- free_decompression_mem(fdi, decomp_state, file); + free_decompression_mem(fdi, decomp_state);
return FALSE; } diff --git a/dlls/cabinet/tests/fdi.c b/dlls/cabinet/tests/fdi.c index b3f70bf..4e1c9e0 100644 --- a/dlls/cabinet/tests/fdi.c +++ b/dlls/cabinet/tests/fdi.c @@ -239,12 +239,9 @@ static void test_FDICreate(void) ok(erf.erfOper == FDIERROR_ALLOC_FAIL, "Expected FDIERROR_ALLOC_FAIL, got %d\n", erf.erfOper); ok(erf.fError == TRUE, "Expected TRUE, got %d\n", erf.fError); - todo_wine - { - ok(GetLastError() == 0xdeadbeef, - "Expected 0xdeadbeef, got %d\n", GetLastError()); - ok(erf.erfType == 0, "Expected 0, got %d\n", erf.erfType); - } + ok(GetLastError() == 0xdeadbeef, + "Expected 0xdeadbeef, got %d\n", GetLastError()); + ok(erf.erfType == 0, "Expected 0, got %d\n", erf.erfType); }
static void test_FDIDestroy(void) @@ -582,8 +579,7 @@ static void test_FDIIsCabinet(void) ok(cabinfo.cFolders == 1, "Expected 1, got %d\n", cabinfo.cFolders); ok(cabinfo.setID == 0xbeef, "Expected 0xbeef, got %d\n", cabinfo.setID); ok(cabinfo.cbCabinet == 182, "Expected 182, got %d\n", cabinfo.cbCabinet); - todo_wine - ok(cabinfo.iCabinet == 0, "Expected 0, got %d\n", cabinfo.iCabinet); + ok(cabinfo.iCabinet == 0, "Expected 0, got %d\n", cabinfo.iCabinet);
fdi_close(fd); FDIDestroy(hfdi); @@ -629,11 +625,8 @@ static void test_FDICopy(void) 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()); - } + ok(GetLastError() == ERROR_INVALID_HANDLE, + "Expected ERROR_INVALID_HANDLE, got %d\n", GetLastError());
FDIDestroy(hfdi); } @@ -649,7 +642,6 @@ static void test_FDICopy(void) /* cabinet with no files or folders */ SetLastError(0xdeadbeef); ret = FDICopy(hfdi, name, path, 0, CopyProgress, NULL, 0); - todo_wine ok(ret == TRUE, "Expected TRUE, got %d\n", ret); ok(GetLastError() == 0, "Expected 0f, got %d\n", GetLastError());