@@ -283,6 +283,7 @@ pgconn_s_sync_connect(int argc, VALUE *argv, VALUE klass)
283283 this = pg_get_connection ( self );
284284 conninfo = rb_funcall2 ( rb_cPGconn , rb_intern ("parse_connect_args" ), argc , argv );
285285 this -> pgconn = gvl_PQconnectdb (StringValueCStr (conninfo ));
286+ RB_GC_GUARD (conninfo );
286287
287288 if (this -> pgconn == NULL )
288289 rb_raise (rb_ePGerror , "PQconnectdb() unable to allocate PGconn structure" );
@@ -331,6 +332,7 @@ pgconn_s_connect_start( int argc, VALUE *argv, VALUE klass )
331332 this = pg_get_connection ( rb_conn );
332333 conninfo = rb_funcall2 ( klass , rb_intern ("parse_connect_args" ), argc , argv );
333334 this -> pgconn = gvl_PQconnectStart ( StringValueCStr (conninfo ) );
335+ RB_GC_GUARD (conninfo );
334336
335337 if ( this -> pgconn == NULL )
336338 rb_raise (rb_ePGerror , "PQconnectStart() unable to allocate PGconn structure" );
@@ -352,6 +354,7 @@ pgconn_s_sync_ping( int argc, VALUE *argv, VALUE klass )
352354
353355 conninfo = rb_funcall2 ( klass , rb_intern ("parse_connect_args" ), argc , argv );
354356 ping = gvl_PQping ( StringValueCStr (conninfo ) );
357+ RB_GC_GUARD (conninfo );
355358
356359 return INT2FIX ((int )ping );
357360}
@@ -580,6 +583,7 @@ pgconn_reset_start2( VALUE self, VALUE conninfo )
580583
581584 /* Start new connection */
582585 this -> pgconn = gvl_PQconnectStart ( p_conninfo );
586+ RB_GC_GUARD (conninfo );
583587
584588 if ( this -> pgconn == NULL )
585589 rb_raise (rb_ePGerror , "PQconnectStart() unable to allocate PGconn structure" );
0 commit comments