summaryrefslogtreecommitdiff
path: root/ext/openssl/ossl_bio.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/openssl/ossl_bio.c')
-rw-r--r--ext/openssl/ossl_bio.c18
1 files changed, 15 insertions, 3 deletions
diff --git a/ext/openssl/ossl_bio.c b/ext/openssl/ossl_bio.c
index 364e2ed71f..8e80f412ee 100644
--- a/ext/openssl/ossl_bio.c
+++ b/ext/openssl/ossl_bio.c
@@ -38,8 +38,8 @@ ossl_protect_obj2bio(VALUE obj, int *status)
return ret;
}
-VALUE
-ossl_membio2str(BIO *bio)
+VALUE
+ossl_membio2str0(BIO *bio)
{
VALUE ret;
BUF_MEM *buf;
@@ -53,6 +53,18 @@ ossl_membio2str(BIO *bio)
VALUE
ossl_protect_membio2str(BIO *bio, int *status)
{
- return rb_protect((VALUE(*)_((VALUE)))ossl_membio2str, (VALUE)bio, status);
+ return rb_protect((VALUE(*)_((VALUE)))ossl_membio2str0, (VALUE)bio, status);
}
+VALUE
+ossl_membio2str(BIO *bio)
+{
+ VALUE ret;
+ int status = 0;
+
+ ret = ossl_protect_membio2str(bio, &status);
+ BIO_free(bio);
+ if(status) rb_jump_tag(status);
+
+ return ret;
+}