From: Pauli Date: Sat, 1 Jul 2023 11:06:47 +0000 (+1000) Subject: doc: update ref count doc in light of refactoring X-Git-Tag: openssl-3.2.0-alpha1~534 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=52c362b3fe5ab9b1c44ec560820b242eb3df0e3b;p=thirdparty%2Fopenssl.git doc: update ref count doc in light of refactoring Reviewed-by: Tomas Mraz Reviewed-by: Kurt Roeckx (Merged from https://github.com/openssl/openssl/pull/21341) --- diff --git a/doc/internal/man3/evp_generic_fetch.pod b/doc/internal/man3/evp_generic_fetch.pod index ce75ffbfc87..b4f625285a9 100644 --- a/doc/internal/man3/evp_generic_fetch.pod +++ b/doc/internal/man3/evp_generic_fetch.pod @@ -121,6 +121,11 @@ And here's the implementation of the FOO method fetcher: if ((foo = OPENSSL_zalloc(sizeof(*foo))) == NULL) return NULL; + if (!CRYPTO_NEW_REF(&foo->refcnt, 1)) { + OPENSSL_free(foo); + return NULL; + } + foo->name_id = name_id; for (; fns->function_id != 0; fns++) { @@ -151,9 +156,16 @@ And here's the implementation of the FOO method fetcher: EVP_FOO_meth_free(EVP_FOO *foo) { + int i; + if (foo != NULL) { OSSL_PROVIDER *prov = foo->prov; + CRYPTO_DOWN_REF(&foo->refcnt, &i); + if (i > 0) + return; + + CRYPTO_FREE_REF(&foo->refcnt); OPENSSL_free(foo); ossl_provider_free(prov); } @@ -170,7 +182,7 @@ And here's the implementation of the FOO method fetcher: EVP_FOO *foo = vfoo; int ref = 0; - CRYPTO_UP_REF(&foo->refcnt, &ref, foo_lock); + CRYPTO_UP_REF(&foo->refcnt, &ref); return 1; }