diff options
Diffstat (limited to 'ext/openssl/ossl_bio.c')
-rw-r--r-- | ext/openssl/ossl_bio.c | 18 |
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; +} |