aboutsummaryrefslogtreecommitdiff
path: root/src/os_os2.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/os_os2.c')
-rw-r--r--src/os_os2.c9
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;
+ }
}
/*