wrappers/openssl: mark casts as gcsafe

Nim will pretend that these proc are not gcsafe if they are not marked.
This commit is contained in:
Leorize 2020-06-04 17:41:53 -05:00 • committed by Andreas Rumpf
commit 3cd74c6408

View file

@ -403,8 +403,7 @@ else:
proc getOpenSSLVersion*(): culong = proc getOpenSSLVersion*(): culong =
## Return OpenSSL version as unsigned long or 0 if not available ## Return OpenSSL version as unsigned long or 0 if not available
let theProc = cast[proc(): culong {.cdecl.}](utilSymNullable("OpenSSL_version_num", "SSLeay")) let theProc = cast[proc(): culong {.cdecl, gcsafe.}](utilSymNullable("OpenSSL_version_num", "SSLeay"))
{.gcsafe.}:
result = result =
if theProc.isNil: 0.culong if theProc.isNil: 0.culong
else: theProc() else: theProc()
@ -413,13 +412,10 @@ else:
# A compatibility wrapper for `SSL_in_init()` for OpenSSL 1.0, 1.1 and LibreSSL # A compatibility wrapper for `SSL_in_init()` for OpenSSL 1.0, 1.1 and LibreSSL
const MainProc = "SSL_in_init" const MainProc = "SSL_in_init"
let let
theProc {.global.} = cast[proc(ssl: SslPtr): cint {.cdecl.}](sslSymNullable(MainProc)) theProc {.global.} = cast[proc(ssl: SslPtr): cint {.cdecl, gcsafe.}](sslSymNullable(MainProc))
# Fallback # Fallback
sslState {.global.} = cast[proc(ssl: SslPtr): cint {.cdecl.}](sslSymNullable("SSL_state")) sslState {.global.} = cast[proc(ssl: SslPtr): cint {.cdecl, gcsafe.}](sslSymNullable("SSL_state"))
# FIXME: This shouldn't be needed, but the compiler is complaining about
# `sslState` being GC-ed memory???
{.gcsafe.}:
if not theProc.isNil: if not theProc.isNil:
theProc(ssl) theProc(ssl)
elif not sslState.isNil: elif not sslState.isNil: