Hi Mark! Thanks for all the advices. Here's the new patch according to your advices. Include: 1. Added new procedure pointer->procedure-with-errno with #:return-errno? Question: Should we make #:return-errno? true in default? This would make the name *-with-errno more reasonable. At present, it's false in default. 2. Used scm_cons2 3. Store errno to a local var after ffi_call immediately. 4. Set errno=0 only when #:return-errno? is true. 5. Merged all modifications into one patch. Comments please. Best regards.