Some platforms provide getcontext() but it does not work
[openssl.git] / crypto / async / arch / async_posix.c
index 2d9e5102fcdcbd63f2f246b06caf895eb2d3991a..33f2a3fa1ea21f7f42237c589e088bca19904676 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)