Better error handling when mmap'ing
authorWim Taymans <wim.taymans@gmail.com>
Sat, 15 Jun 2002 16:12:20 +0000 (16:12 +0000)
committerWim Taymans <wim.taymans@gmail.com>
Sat, 15 Jun 2002 16:12:20 +0000 (16:12 +0000)
Original commit message from CVS:
Better error handling when mmap'ing

gst/cothreads.c

index 88be004..6028b7f 100644 (file)
@@ -146,7 +146,7 @@ cothread_state*
 cothread_create (cothread_context *ctx)
 {
   cothread_state *thread;
-  void *sp;
+  void *sp, *mmaped = 0;
   guchar *stack_end;
   gint slot = 0;
 
@@ -178,11 +178,16 @@ cothread_create (cothread_context *ctx)
   thread = (cothread_state *) (stack_end + ((slot - 1) * COTHREAD_STACKSIZE));
   GST_DEBUG (0, "new stack at %p", thread);
 
-  if (mmap ((void *) thread, COTHREAD_STACKSIZE,
-           PROT_READ | PROT_WRITE | PROT_EXEC, MAP_FIXED | MAP_PRIVATE | MAP_ANON, -1, 0) == MAP_FAILED) {
+  mmaped = mmap ((void *) thread, COTHREAD_STACKSIZE,
+           PROT_READ | PROT_WRITE | PROT_EXEC, MAP_FIXED | MAP_PRIVATE | MAP_ANON, -1, 0);
+  if (mmaped == MAP_FAILED) {
     perror ("mmap'ing cothread stack space");
     return NULL;
   }
+  if (mmaped != thread) {
+    g_warning ("could not mmap requested memory");
+    return NULL;
+  }
 
   thread->ctx = ctx;
   thread->threadnum = slot;