Some platforms provide getcontext() but it does not work
[openssl.git] / crypto / async / arch / async_posix.c
index 2d9e510..33f2a3f 100644 (file)
 
 int ASYNC_is_capable(void)
 {
-    return 1;
+    ucontext_t ctx;
+
+    /*
+     * Some platforms provide getcontext() but it does not work (notably
+     * MacOSX PPC64). Check for a working getcontext();
+     */
+    return getcontext(&ctx) == 0;
 }
 
 void async_local_cleanup(void)