~ chicken-core (chicken-5) 4dcc98a116ee72c0b3e13f0337236f96360f44dc


commit 4dcc98a116ee72c0b3e13f0337236f96360f44dc
Author:     megane <meganeka@gmail.com>
AuthorDate: Sat May 22 07:53:54 2021 +0300
Commit:     Evan Hanson <evhan@foldling.org>
CommitDate: Fri Jul 30 13:13:07 2021 +1200

    FFI: Remove annotation of locative as return type for c-pointer
    
    The c-pointers are converted to pointers or #f, not locatives.
    
    See foreign-result-conversion
    
    Signed-off-by: Evan Hanson <evhan@foldling.org>

diff --git a/support.scm b/support.scm
index 19702271..c7408903 100644
--- a/support.scm
+++ b/support.scm
@@ -1389,7 +1389,9 @@
 		    unsigned-long)
 	   'integer)
 	  ((c-pointer)
-	   '(or false pointer locative))
+	   (if (eq? 'arg mode)
+	       '(or false pointer locative)
+	       '(or false pointer)))
 	  ((nonnull-c-pointer) 'pointer)
 	  ((c-string c-string* unsigned-c-string unsigned-c-string*)
 	   '(or false string))
@@ -1401,7 +1403,9 @@
 	   (cond ((pair? t)
 		  (case (car t)
 		    ((ref pointer function c-pointer)
-		     '(or false pointer locative))
+		     (if (eq? 'arg mode)
+			 '(or false pointer locative)
+			 '(or false pointer)))
 		    ((const) (foreign-type->scrutiny-type (cadr t) mode))
 		    ((enum) 'integer)
 		    ((nonnull-pointer nonnull-c-pointer) 'pointer)
Trap