Fix non-variadic CIF initialization for Apple/ARM64
authorOle André Vadla Ravnås <ole.andre.ravnas@tillitech.com>
Fri, 25 Jul 2014 22:11:06 +0000 (00:11 +0200)
committerOle André Vadla Ravnås <ole.andre.ravnas@soundrop.com>
Fri, 25 Jul 2014 22:17:07 +0000 (00:17 +0200)
Turns out `aarch64_nfixedargs` wasn't initialized in the non-variadic
case, resulting in undefined behavior when allocating arguments.

src/aarch64/ffi.c

index b807a2d..05f1a13 100644 (file)
@@ -779,6 +779,8 @@ ffi_prep_cif_machdep (ffi_cif *cif)
           }
     }
 
+  cif->aarch64_nfixedargs = 0;
+
   return FFI_OK;
 }
 
@@ -789,9 +791,13 @@ ffi_status ffi_prep_cif_machdep_var(ffi_cif *cif,
                                    unsigned int nfixedargs,
                                    unsigned int ntotalargs)
 {
+  ffi_status status;
+
+  status = ffi_prep_cif_machdep (cif);
+
   cif->aarch64_nfixedargs = nfixedargs;
 
-  return ffi_prep_cif_machdep(cif);
+  return status;
 }
 
 #endif