aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAlex Parrill <[email protected]>2019-06-08 17:56:01 -0400
committerMatthew Collins <[email protected]>2019-06-09 23:50:11 +0100
commitb93f00c71f64b4b6f2296f626f6c5d6d5390d51e (patch)
treea98c9516fb03f13f286b68f8b8f2b69e65d92827 /src
parentFix QueryResults possibly outliving the steam client by limiting it to the ca... (diff)
downloadsteamworks-rs-b93f00c71f64b4b6f2296f626f6c5d6d5390d51e.tar.xz
steamworks-rs-b93f00c71f64b4b6f2296f626f6c5d6d5390d51e.zip
Fix Query handle leaking on errors
Diffstat (limited to 'src')
-rw-r--r--src/ugc.rs5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/ugc.rs b/src/ugc.rs
index 7982c75..a3ff38b 100644
--- a/src/ugc.rs
+++ b/src/ugc.rs
@@ -370,16 +370,19 @@ impl <Manager> UserListQuery<Manager> {
register_call_result::<sys::SteamUGCQueryCompleted_t, _, _>(
&inner, api_call, CALLBACK_BASE_ID + 1,
move |v, io_error| {
+ let ugc = sys::steam_rust_get_ugc();
if io_error {
+ sys::SteamAPI_ISteamUGC_ReleaseQueryUGCRequest(ugc, handle);
cb(Err(SteamError::IOFailure));
return;
} else if v.m_eResult != sys::EResult::EResultOK {
+ sys::SteamAPI_ISteamUGC_ReleaseQueryUGCRequest(ugc, handle);
cb(Err(v.m_eResult.into()));
return;
}
let result = QueryResults {
- ugc: sys::steam_rust_get_ugc(),
+ ugc,
handle,
num_results_returned: v.m_unNumResultsReturned,
num_results_total: v.m_unTotalMatchingResults,