Index: /trunk/ccl/level-0/l0-aprims.lisp
===================================================================
--- /trunk/ccl/level-0/l0-aprims.lisp	(revision 569)
+++ /trunk/ccl/level-0/l0-aprims.lisp	(revision 570)
@@ -122,10 +122,13 @@
 
 (defun %make-semaphore-ptr ()
-  (record-system-lock
-   (%setf-macptr
-    (make-gcable-macptr $flags_DisposeSemaphore)
-    (ff-call (%kernel-import ppc32::kernel-import-new-semaphore)
+  (let* ((p (ff-call (%kernel-import ppc32::kernel-import-new-semaphore)
 	     :signed-fullword 0
-             :address))))
+             :address)))
+    (if (%null-ptr-p p)
+      (error "Can't create semaphore.")
+      (record-system-lock
+       (%setf-macptr
+	(make-gcable-macptr $flags_DisposeSemaphore)
+	p)))))
 
 (defun make-semaphore ()
