diff options
Diffstat (limited to 'src/os_os2.c')
-rw-r--r-- | src/os_os2.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/src/os_os2.c b/src/os_os2.c index 0a008e183..b127957c0 100644 --- a/src/os_os2.c +++ b/src/os_os2.c @@ -296,7 +296,14 @@ int os2Read( OsFile *id, void *pBuf, int amt ){ SimulateIOError( return SQLITE_IOERR ); TRACE3( "READ %d lock=%d\n", ((os2File*)id)->h, ((os2File*)id)->locktype ); DosRead( ((os2File*)id)->h, pBuf, amt, &got ); - return (got == (ULONG)amt) ? SQLITE_OK : SQLITE_IOERR_SHORT_READ; + if (got == (ULONG)amt) + return SQLITE_OK; + else if (got < 0) + return SQLITE_IOERR_READ; + else { + memset(&((char*)pBuf)[got], 0, amt-got); + return SQLITE_IOERR_SHORT_READ; + } } /* |