diff --git a/code/c-call.lisp b/code/c-call.lisp
index 18d86aa15f4e45f60359e3fa1573891ed0a8b04a..9e7143a227bd7ad36d3aea193fa4b6b8cc38e90f 100644
--- a/code/c-call.lisp
+++ b/code/c-call.lisp
@@ -313,7 +313,7 @@
 	(make-alien ',name ,(c-type-size res)))
       (defoperator (,(symbolicate "INDIRECT-" pname)
 		    ,(record-type-description res))
-		   ((pointer ,pname))
+		   ((pointer ,(c-type-description pres)))
 	`(alien-indirect (alien-value ,pointer) ,,pos))
       ,@(define-record-operators res))))
 
@@ -387,7 +387,7 @@
 	(setf (gethash ',name *c-type-names*) ',res))
       (defoperator (,(symbolicate "INDIRECT-" name)
 		    ,(c-type-description type))
-		   ((pointer ,name)
+		   ((pointer ,(c-type-description res))
 		    ,@(unless (c-type-size type)
 			'(size)))
 	`(alien-indirect (alien-value ,pointer)