summaryrefslogtreecommitdiff
path: root/crypto/apr_crypto.c
diff options
context:
space:
mode:
authorylavic <ylavic@13f79535-47bb-0310-9956-ffa450edef68>2018-06-13 09:44:11 +0000
committerylavic <ylavic@13f79535-47bb-0310-9956-ffa450edef68>2018-06-13 09:44:11 +0000
commit49c05e1f6171c2350d994d9424d9fa605f5b4ff3 (patch)
tree9822f2c88ac5b16409f280b21b185fe14a2eb8b6 /crypto/apr_crypto.c
parent4a1da6471a0ea9458c0aa20ddf82eab93dfa4869 (diff)
downloadlibapr-49c05e1f6171c2350d994d9424d9fa605f5b4ff3.tar.gz
apr_crypto: follow up to r1833359: reuse crypto_lib_free() code.
git-svn-id: http://svn.apache.org/repos/asf/apr/apr/trunk@1833451 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'crypto/apr_crypto.c')
-rw-r--r--crypto/apr_crypto.c17
1 files changed, 11 insertions, 6 deletions
diff --git a/crypto/apr_crypto.c b/crypto/apr_crypto.c
index 6170825b5..ac8c8d013 100644
--- a/crypto/apr_crypto.c
+++ b/crypto/apr_crypto.c
@@ -340,14 +340,21 @@ static struct crypto_lib *spare_lib_pop(void)
return lib;
}
-static apr_status_t crypto_lib_cleanup(void *arg)
+static apr_status_t crypto_lib_free(struct crypto_lib *lib)
{
- struct crypto_lib *lib = arg;
+ apr_status_t rv;
apr_hash_set(active_libs, lib->name, APR_HASH_KEY_STRING, NULL);
- lib->term();
+ rv = lib->term();
spare_lib_push(lib);
+ return rv;
+}
+
+static apr_status_t crypto_lib_cleanup(void *arg)
+{
+ crypto_lib_free(arg);
+
return APR_SUCCESS;
}
@@ -502,10 +509,8 @@ static apr_status_t crypto_lib_term(const char *name)
#endif
;
if (rv == APR_SUCCESS) {
- apr_hash_set(active_libs, lib->name, APR_HASH_KEY_STRING, NULL);
apr_pool_cleanup_kill(lib->pool, lib, crypto_lib_cleanup);
- rv = lib->term();
- spare_lib_push(lib);
+ rv = crypto_lib_free(lib);
}
return rv;
}