diff options
Diffstat (limited to 'ext/lsm1/lsm_unix.c')
-rw-r--r-- | ext/lsm1/lsm_unix.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/ext/lsm1/lsm_unix.c b/ext/lsm1/lsm_unix.c index 22240771e..88952d15f 100644 --- a/ext/lsm1/lsm_unix.c +++ b/ext/lsm1/lsm_unix.c @@ -228,6 +228,10 @@ static int lsmPosixOsRemap( } p->pMap = mmap(0, iSz, PROT_READ|PROT_WRITE, MAP_SHARED, p->fd, 0); + if( p->pMap==MAP_FAILED ){ + p->pMap = 0; + return LSM_IOERR_BKPT; + } p->nMap = iSz; } @@ -413,7 +417,10 @@ static int lsmPosixOsShmMap(lsm_file *pFile, int iChunk, int sz, void **ppShm){ p->apShm[iChunk] = mmap(0, LSM_SHM_CHUNK_SIZE, PROT_READ|PROT_WRITE, MAP_SHARED, p->shmfd, iChunk*LSM_SHM_CHUNK_SIZE ); - if( p->apShm[iChunk]==0 ) return LSM_IOERR_BKPT; + if( p->apShm[iChunk]==MAP_FAILED ){ + p->apShm[iChunk] = 0; + return LSM_IOERR_BKPT; + } } *ppShm = p->apShm[iChunk]; |