From a8b076d67f358b9b03c39360e3c5343a7d006487 Mon Sep 17 00:00:00 2001 From: Marcus Meissner Date: Sun, 20 Jan 2013 13:17:09 +0100 Subject: [PATCH] msvcrt: read_utf8: free readbuf on return (Coverity). --- dlls/msvcrt/file.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/dlls/msvcrt/file.c b/dlls/msvcrt/file.c index 0df6a8695be..8a63b51758f 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; }