aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authormistachkin <mistachkin@noemail.net>2013-10-16 09:49:10 +0000
committermistachkin <mistachkin@noemail.net>2013-10-16 09:49:10 +0000
commitc216566ba5345e8e58dd67808fb8d2959ff1c43f (patch)
treed43bfd7044898a5e1e6c1e3cce34b567f4312c2b /src
parenta4bbc8b119e6b93418fb6e25149bc3118cd36f38 (diff)
downloadsqlite-c216566ba5345e8e58dd67808fb8d2959ff1c43f.tar.gz
sqlite-c216566ba5345e8e58dd67808fb8d2959ff1c43f.zip
Fix memory/resource leaks for WinCE and Cygwin.
FossilOrigin-Name: 2470d1bb08b2661bcfde7a605208eb6044836d5c
Diffstat (limited to 'src')
-rw-r--r--src/os_win.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/src/os_win.c b/src/os_win.c
index e1ed22c33..a6b3fb1a0 100644
--- a/src/os_win.c
+++ b/src/os_win.c
@@ -2196,8 +2196,7 @@ static int winClose(sqlite3_file *id){
OSTRACE(("CLOSE file=%p\n", pFile->h));
#if SQLITE_MAX_MMAP_SIZE>0
- rc = winUnmapfile(pFile);
- if( rc!=SQLITE_OK ) return rc;
+ winUnmapfile(pFile);
#endif
do{
@@ -3003,7 +3002,7 @@ static int winFileControl(sqlite3_file *id, int op, void *pArg){
if( newLimit>=0 && newLimit!=pFile->mmapSizeMax && pFile->nFetchOut==0 ){
pFile->mmapSizeMax = newLimit;
if( pFile->mmapSize>0 ){
- (void)winUnmapfile(pFile);
+ winUnmapfile(pFile);
rc = winMapfile(pFile, -1);
}
}
@@ -4073,6 +4072,7 @@ static int winGetTempname(sqlite3_vfs *pVfs, char **pzBuf){
if( winIsDriveLetterAndColon(zDir) ){
zConverted = winConvertFromUtf8Filename(zDir);
if( !zConverted ){
+ sqlite3_free(zBuf);
OSTRACE(("TEMP-FILENAME rc=SQLITE_IOERR_NOMEM\n"));
return SQLITE_IOERR_NOMEM;
}
@@ -4085,6 +4085,7 @@ static int winGetTempname(sqlite3_vfs *pVfs, char **pzBuf){
}else{
zConverted = sqlite3MallocZero( nBuf+1 );
if( !zConverted ){
+ sqlite3_free(zBuf);
OSTRACE(("TEMP-FILENAME rc=SQLITE_IOERR_NOMEM\n"));
return SQLITE_IOERR_NOMEM;
}
@@ -4092,6 +4093,7 @@ static int winGetTempname(sqlite3_vfs *pVfs, char **pzBuf){
osIsNT() ? CCP_POSIX_TO_WIN_W : CCP_POSIX_TO_WIN_A, zDir,
zConverted, nBuf+1)<0 ){
sqlite3_free(zConverted);
+ sqlite3_free(zBuf);
OSTRACE(("TEMP-FILENAME rc=SQLITE_IOERR_CONVPATH\n"));
return winLogError(SQLITE_IOERR_CONVPATH, (DWORD)errno,
"winGetTempname1", zDir);
@@ -4105,6 +4107,7 @@ static int winGetTempname(sqlite3_vfs *pVfs, char **pzBuf){
char *zUtf8 = winUnicodeToUtf8(zConverted);
if( !zUtf8 ){
sqlite3_free(zConverted);
+ sqlite3_free(zBuf);
OSTRACE(("TEMP-FILENAME rc=SQLITE_IOERR_NOMEM\n"));
return SQLITE_IOERR_NOMEM;
}
@@ -4120,7 +4123,6 @@ static int winGetTempname(sqlite3_vfs *pVfs, char **pzBuf){
}
sqlite3_free(zConverted);
}
- break;
}
}
#elif !SQLITE_OS_WINRT && !defined(__CYGWIN__)
@@ -4490,9 +4492,9 @@ static int winOpen(
#endif
{
sqlite3_free(zConverted);
- sqlite3_free(zTmpname);
}
+ sqlite3_free(zTmpname);
pFile->pMethod = &winIoMethod;
pFile->pVfs = pVfs;
pFile->h = h;