[PATCH] msvcrt: read_utf8: free readbuf on return (Coverity)
Marcus Meissner
marcus at jet.franken.de
Sun Jan 20 06:17:09 CST 2013
CID 968559
(not all return paths need this free, the whole if (count < 4)
uses the mini_buf)
Ciao, Marcus
---
dlls/msvcrt/file.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/dlls/msvcrt/file.c b/dlls/msvcrt/file.c
index 0df6a86..8a63b51 100644
--- a/dlls/msvcrt/file.c
+++ b/dlls/msvcrt/file.c
@@ -2226,13 +2226,16 @@ static int read_utf8(int fd, MSVCRT_wchar_t *buf, unsigned int count)
num_read = 0;
}else if(GetLastError() == ERROR_BROKEN_PIPE) {
fdinfo->wxflag |= WX_ATEOF;
+ if (readbuf != min_buf) MSVCRT_free(readbuf);
return 0;
}else {
msvcrt_set_errno(GetLastError());
+ if (readbuf != min_buf) MSVCRT_free(readbuf);
return -1;
}
}else if(!pos && !num_read) {
fdinfo->wxflag |= WX_ATEOF;
+ if (readbuf != min_buf) MSVCRT_free(readbuf);
return 0;
}
@@ -2291,9 +2294,11 @@ static int read_utf8(int fd, MSVCRT_wchar_t *buf, unsigned int count)
if(!(num_read = MultiByteToWideChar(CP_UTF8, 0, readbuf, pos, buf, count))) {
msvcrt_set_errno(GetLastError());
+ if (readbuf != min_buf) MSVCRT_free(readbuf);
return -1;
}
+ if (readbuf != min_buf) MSVCRT_free(readbuf);
return num_read*2;
}
--
1.7.10.4
More information about the wine-patches
mailing list