diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/test1.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/src/test1.c b/src/test1.c index ee99f8dad..4dcba97cd 100644 --- a/src/test1.c +++ b/src/test1.c @@ -8024,13 +8024,13 @@ static int SQLITE_TCLAPI win32_file_lock( pVfs = sqlite3_vfs_find(0); x.pFd = (sqlite3_file*)sqlite3_malloc(pVfs->szOsFile); - /* xOpen() must be passed a dual-nul-terminated string */ + /* xOpen() must be passed a dual-nul-terminated string preceded in memory + ** by 4 0x00 bytes. */ zFilename = Tcl_GetStringFromObj(objv[1], &nFilename); - zTerm = (char*)sqlite3_malloc(nFilename+2); - memcpy(zTerm, zFilename, nFilename); - zTerm[nFilename] = 0; - zTerm[nFilename+1] = 0; - rc = pVfs->xOpen(pVfs, zTerm, x.pFd, flags, &flags); + zTerm = (char*)sqlite3_malloc(nFilename+6); + memset(zTerm, 0, nFilename+6); + memcpy(&zTerm[4], zFilename, nFilename); + rc = pVfs->xOpen(pVfs, &zTerm[4], x.pFd, flags, &flags); sqlite3_free(zTerm); if( rc!=SQLITE_OK ){ |