[PATCH] version: LZCopy return value is LONG

Marcus Meissner marcus at jet.franken.de
Mon Mar 24 06:37:33 CDT 2008


Hi,

Coverity CID 5 shows a sign issue between
return value of LZCopy and casted later on.

Fixed the sign issues.

Ciao, Marcus
---
 dlls/version/install.c |   18 ++++++++++--------
 1 files changed, 10 insertions(+), 8 deletions(-)

diff --git a/dlls/version/install.c b/dlls/version/install.c
index 5ff25e7..d3170e3 100644
--- a/dlls/version/install.c
+++ b/dlls/version/install.c
@@ -367,7 +367,8 @@ DWORD WINAPI VerInstallFileA(
     LPCSTR pdest;
     char	destfn[260],tmpfn[260],srcfn[260];
     HFILE	hfsrc,hfdst;
-    DWORD	attr,ret,xret,tmplast;
+    DWORD	attr,xret,tmplast;
+    LONG	ret;
     LPBYTE	buf1,buf2;
     OFSTRUCT	ofs;
 
@@ -419,30 +420,31 @@ DWORD WINAPI VerInstallFileA(
 	}
 	ret = LZCopy(hfsrc,hfdst);
 	_lclose(hfdst);
-	if (((LONG)ret) < 0) {
+	if (ret < 0) {
 	    /* translate LZ errors into VIF_xxx */
 	    switch (ret) {
 	    case LZERROR_BADINHANDLE:
 	    case LZERROR_READ:
 	    case LZERROR_BADVALUE:
 	    case LZERROR_UNKNOWNALG:
-		ret = VIF_CANNOTREADSRC;
+		xret = VIF_CANNOTREADSRC;
 		break;
 	    case LZERROR_BADOUTHANDLE:
 	    case LZERROR_WRITE:
-		ret = VIF_OUTOFSPACE;
+		xret = VIF_OUTOFSPACE;
 		break;
 	    case LZERROR_GLOBALLOC:
 	    case LZERROR_GLOBLOCK:
-		ret = VIF_OUTOFMEMORY;
+		xret = VIF_OUTOFMEMORY;
 		break;
 	    default: /* unknown error, should not happen */
-		ret = 0;
+		FIXME("Unknown LZCopy error %d, ignoring.\n", ret);
+		xret = 0;
 		break;
 	    }
-	    if (ret) {
+	    if (xret) {
 		LZClose(hfsrc);
-		return ret;
+		return xret;
 	    }
 	}
     }
-- 
1.5.2.4



More information about the wine-patches mailing list