Check return code from mmap() properly.

This commit is contained in:
Marcus Sundberg 2000-01-05 21:22:48 +00:00
parent 8d8f0d617c
commit 04c438c55e
2 changed files with 18 additions and 14 deletions

View file

@ -38,6 +38,10 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
# include <machine/soundcard.h>
#endif
#ifndef MAP_FAILED
# define MAP_FAILED ((void*)-1)
#endif
static int audio_fd;
static int snd_inited;
@ -141,8 +145,7 @@ qboolean SNDDMA_Init(void)
shm->buffer = (unsigned char *) mmap(NULL, info.fragstotal
* info.fragsize, PROT_WRITE, MAP_FILE|MAP_SHARED, audio_fd, 0);
// if (!shm->buffer || shm->buffer == (unsigned char *)-1)
if (!shm->buffer)
if (shm->buffer == MAP_FAILED)
{
perror("/dev/dsp");
Con_Printf("Could not mmap /dev/dsp\n");

View file

@ -17,22 +17,23 @@ along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
// sys_sun.h -- Sun system driver
// sys_unix.c -- Unix system driver
#include "quakedef.h"
#include "errno.h"
#include <stdio.h>
#include <errno.h>
#include <fcntl.h>
#include <stddef.h>
#include <signal.h>
#include <sys/types.h>
#include <sys/time.h>
#include <sys/stat.h>
#include <sys/mman.h>
#include <sys/param.h>
#include <fcntl.h>
#include <stddef.h>
#include <sys/types.h>
#include <fcntl.h>
#include <sys/mman.h>
#include <stdio.h>
#include <signal.h>
#ifndef MAP_FAILED
# define MAP_FAILED ((void*)-1)
#endif
qboolean isDedicated;
@ -101,9 +102,9 @@ int Sys_FileOpenRead (char *path, int *hndl)
sys_handles[i].hFile = f;
sys_handles[i].nLen = filelength(f);
sys_handles[i].nPos = 0;
sys_handles[i].pMap = mmap( 0, sys_handles[i].nLen, PROT_READ, MAP_SHARED, fileno( sys_handles[i].hFile ), 0 );
if (!sys_handles[i].pMap || (sys_handles[i].pMap == (char *)-1))
{
sys_handles[i].pMap = mmap(NULL, sys_handles[i].nLen, PROT_READ,
MAP_SHARED, fileno(sys_handles[i].hFile), 0 );
if (sys_handles[i].pMap == MAP_FAILED) {
printf( "mmap %s failed!", path );
sys_handles[i].pMap = NULL;
}