Skip to content

Commit 596b4cf

Browse files
committed
assign objects after allocation
1 parent afe56fc commit 596b4cf

1 file changed

Lines changed: 9 additions & 8 deletions

File tree

‎ext/openssl/ossl_ssl.c‎

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2820,7 +2820,8 @@ ossl_ssl_wrap_stream(VALUE self, SSL *stream_ssl)
28202820
{
28212821
VALUE stream_obj;
28222822

2823-
stream_obj = TypedData_Wrap_Struct(cSSLSocket, &ossl_ssl_type, stream_ssl);
2823+
stream_obj = TypedData_Wrap_Struct(cSSLSocket, &ossl_ssl_type, NULL);
2824+
RTYPEDDATA_DATA(stream_obj) = stream_ssl;
28242825
SSL_set_ex_data(stream_ssl, ossl_ssl_ex_ptr_idx, (void *)stream_obj);
28252826

28262827
/* Set @io and @context from the parent, and @connection to prevent GC */
@@ -3091,15 +3092,14 @@ ossl_ssl_new_listener(int argc, VALUE *argv, VALUE klass)
30913092
if (!listener)
30923093
ossl_raise(eSSLError, "SSL_new_listener");
30933094

3095+
listener_obj = TypedData_Wrap_Struct(cSSLSocket, &ossl_ssl_type, NULL);
3096+
RTYPEDDATA_DATA(listener_obj) = listener;
3097+
SSL_set_ex_data(listener, ossl_ssl_ex_ptr_idx, (void *)listener_obj);
3098+
30943099
Check_Type(v_io, T_FILE);
30953100
GetOpenFile(v_io, fptr);
3096-
if (!SSL_set_fd(listener, TO_SOCKET(rb_io_descriptor(v_io)))) {
3097-
SSL_free(listener);
3101+
if (!SSL_set_fd(listener, TO_SOCKET(rb_io_descriptor(v_io))))
30983102
ossl_raise(eSSLError, "SSL_set_fd");
3099-
}
3100-
3101-
listener_obj = TypedData_Wrap_Struct(cSSLSocket, &ossl_ssl_type, listener);
3102-
SSL_set_ex_data(listener, ossl_ssl_ex_ptr_idx, (void *)listener_obj);
31033103
SSL_set_blocking_mode(listener, 0);
31043104
SSL_set_default_stream_mode(listener, SSL_DEFAULT_STREAM_MODE_NONE);
31053105

@@ -3115,7 +3115,8 @@ ossl_ssl_wrap_connection(VALUE self, SSL *conn_ssl)
31153115
{
31163116
VALUE conn_obj;
31173117

3118-
conn_obj = TypedData_Wrap_Struct(cSSLSocket, &ossl_ssl_type, conn_ssl);
3118+
conn_obj = TypedData_Wrap_Struct(cSSLSocket, &ossl_ssl_type, NULL);
3119+
RTYPEDDATA_DATA(conn_obj) = conn_ssl;
31193120
SSL_set_ex_data(conn_ssl, ossl_ssl_ex_ptr_idx, (void *)conn_obj);
31203121
SSL_set_blocking_mode(conn_ssl, 0);
31213122
SSL_set_default_stream_mode(conn_ssl, SSL_DEFAULT_STREAM_MODE_NONE);

0 commit comments

Comments
 (0)