mirror of
https://github.com/Detanup01/gbe_fork.git
synced 2024-11-23 11:15:34 +08:00
fix a scenario in which apps send invalid handle and expect failure callback + call-result
This commit is contained in:
parent
7936cd6680
commit
266c4efab3
@ -294,11 +294,24 @@ SteamAPICall_t Steam_UGC::SendQueryUGCRequest( UGCQueryHandle_t handle )
|
|||||||
{
|
{
|
||||||
PRINT_DEBUG("%llu", handle);
|
PRINT_DEBUG("%llu", handle);
|
||||||
std::lock_guard<std::recursive_mutex> lock(global_mutex);
|
std::lock_guard<std::recursive_mutex> lock(global_mutex);
|
||||||
if (handle == k_UGCQueryHandleInvalid) return k_uAPICallInvalid;
|
|
||||||
|
const auto trigger_failure = [handle, this](){
|
||||||
|
SteamUGCQueryCompleted_t data{};
|
||||||
|
data.m_handle = handle;
|
||||||
|
data.m_eResult = k_EResultFail;
|
||||||
|
data.m_unNumResultsReturned = 0;
|
||||||
|
data.m_unTotalMatchingResults = 0;
|
||||||
|
data.m_bCachedData = false;
|
||||||
|
|
||||||
|
auto ret = callback_results->addCallResult(data.k_iCallback, &data, sizeof(data));
|
||||||
|
callbacks->addCBResult(data.k_iCallback, &data, sizeof(data));
|
||||||
|
return ret;
|
||||||
|
};
|
||||||
|
|
||||||
|
if (handle == k_UGCQueryHandleInvalid) return trigger_failure();
|
||||||
|
|
||||||
auto request = std::find_if(ugc_queries.begin(), ugc_queries.end(), [&handle](struct UGC_query const& item) { return item.handle == handle; });
|
auto request = std::find_if(ugc_queries.begin(), ugc_queries.end(), [&handle](struct UGC_query const& item) { return item.handle == handle; });
|
||||||
if (ugc_queries.end() == request)
|
if (ugc_queries.end() == request) return trigger_failure();
|
||||||
return k_uAPICallInvalid;
|
|
||||||
|
|
||||||
if (request->return_all_subscribed) {
|
if (request->return_all_subscribed) {
|
||||||
request->results = std::set<PublishedFileId_t>(ugc_bridge->subbed_mods_itr_begin(), ugc_bridge->subbed_mods_itr_end());
|
request->results = std::set<PublishedFileId_t>(ugc_bridge->subbed_mods_itr_begin(), ugc_bridge->subbed_mods_itr_end());
|
||||||
|
Loading…
Reference in New Issue
Block a user