diff --git a/code/alieneval.lisp b/code/alieneval.lisp
index 4ecc4e3ad922e760049365ddab0121e737563079..c8b8c04b86302f7e2005e024c2bbe0d43d7f5961 100644
--- a/code/alieneval.lisp
+++ b/code/alieneval.lisp
@@ -5,7 +5,7 @@
 ;;; Carnegie Mellon University, and has been placed in the public domain.
 ;;;
 (ext:file-comment
-  "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/alieneval.lisp,v 1.41 1997/09/16 08:44:55 dtc Exp $")
+  "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/alieneval.lisp,v 1.42 1998/01/13 21:16:34 dtc Exp $")
 ;;;
 ;;; **********************************************************************
 ;;;
@@ -1706,8 +1706,14 @@
 ;;;; Accessing local aliens.
 
 (defun make-local-alien (info)
-  (let ((alien (eval `(make-alien ,(local-alien-info-type info)))))
-    (finalize info #'(lambda () (free-alien alien)))
+  (let* ((alien (eval `(make-alien ,(local-alien-info-type info))))
+	 (alien-sap (alien-sap alien)))
+    (finalize
+     alien
+     #'(lambda ()
+	 (alien-funcall
+	  (extern-alien "free" (function (values) system-area-pointer))
+	  alien-sap)))
     alien))
 
 (defun note-local-alien-type (info alien)
@@ -1751,8 +1757,7 @@
 
 (defun dispose-local-alien (info alien)
   (declare (ignore info))
-  #+nil
-  (cancel-finalization info)
+  (cancel-finalization alien)
   (free-alien alien))