Skip to content

Commit ae46e13

Browse files
authored
Ensure string_params doesn't get GC'd (#276)
* Update asyncresults.jl * move to GC.@preserve & fix all usages * fix whitespace * fixup style
1 parent 2c0547d commit ae46e13

File tree

4 files changed

+10
-4
lines changed

4 files changed

+10
-4
lines changed

src/asyncresults.jl

+3-1
Original file line numberDiff line numberDiff line change
@@ -252,7 +252,9 @@ function async_execute(
252252
pointer_params = parameter_pointers(string_params)
253253

254254
async_result = _async_execute(jl_conn; binary_format=binary_format, kwargs...) do jl_conn
255-
_async_submit(jl_conn.conn, query, pointer_params; binary_format=binary_format)
255+
GC.@preserve string_params _async_submit(
256+
jl_conn.conn, query, pointer_params; binary_format=binary_format
257+
)
256258
end
257259

258260
return async_result

src/copy.jl

+3-1
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,9 @@ function execute(
5252
if parameters === nothing
5353
result = _execute(jl_conn.conn, copy.query)
5454
else
55-
result = _execute(jl_conn.conn, copy.query, pointer_params)
55+
result = GC.@preserve string_params _execute(
56+
jl_conn.conn, copy.query, pointer_params
57+
)
5658
end
5759
result_status = libpq_c.PQresultStatus(result)
5860

src/results.jl

+3-1
Original file line numberDiff line numberDiff line change
@@ -322,7 +322,9 @@ function execute(
322322
pointer_params = parameter_pointers(string_params)
323323

324324
result = lock(jl_conn) do
325-
_execute(jl_conn.conn, query, pointer_params; binary_format=binary_format)
325+
GC.@preserve string_params _execute(
326+
jl_conn.conn, query, pointer_params; binary_format=binary_format
327+
)
326328
end
327329

328330
return handle_result(

src/statements.jl

+1-1
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ function execute(
121121
pointer_params = parameter_pointers(string_params)
122122

123123
result = lock(stmt.jl_conn) do
124-
_execute_prepared(
124+
GC.@preserve string_params _execute_prepared(
125125
stmt.jl_conn.conn, stmt.name, pointer_params; binary_format=binary_format
126126
)
127127
end

0 commit comments

Comments
 (0)