diff --git a/CHANGELOG.md b/CHANGELOG.md index 4e56e4ed..4d38596d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,16 @@ # Geode Changelog +## v2.0.0-beta.22 + * Add `Patch::updateBytes` to update a patch (ba648340) + * (Possibly) fix random curl crashes (dd440433, 1fb12f2d, 6cd6e4d0, 8998041e, 2be58549) + * This was done by using a build with the thread resolver enabled, possibly fixing race conditions when initing curl + * Prevent `GeodeUpdater.exe` from hanging (d139049b) + * Fix a duplicated node ID in LoadingLayer (#574) + * Fix minor memory leak in AsyncWebRequest (52ea6ea5) + * Fix Wine crashing when launching via terminal (#501) + * Use C locale instead of US (#566) + * Impostor playlayer fix (#562) + ## v2.0.0-beta.21 * Fix `numFromString` for floating point numbers (6d91804) * Fix `ScrollLayer` cropping (5c8ee29) diff --git a/VERSION b/VERSION index 630793a5..5ebad453 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -2.0.0-beta.21 \ No newline at end of file +2.0.0-beta.22 \ No newline at end of file diff --git a/loader/src/utils/web.cpp b/loader/src/utils/web.cpp index 0411f70f..355d2693 100644 --- a/loader/src/utils/web.cpp +++ b/loader/src/utils/web.cpp @@ -170,7 +170,7 @@ private: bool m_sent = false; std::variant m_target; std::vector m_httpHeaders; - + template friend class AsyncWebResult; @@ -358,8 +358,8 @@ SentAsyncWebRequest::Impl::Impl(SentAsyncWebRequest* self, AsyncWebRequest const +[](void* ptr, double total, double now, double, double) -> int { auto data = static_cast(ptr); auto lock = std::unique_lock(data->self->m_statusMutex); - data->self->m_statusCV.wait(lock, [data]() { - return !data->self->m_paused; + data->self->m_statusCV.wait(lock, [data]() { + return !data->self->m_paused; }); if (data->self->m_cancelled) { if (data->file) { @@ -381,6 +381,10 @@ SentAsyncWebRequest::Impl::Impl(SentAsyncWebRequest* self, AsyncWebRequest const ); curl_easy_setopt(curl, CURLOPT_PROGRESSDATA, &data); auto res = curl_easy_perform(curl); + + // free the header list + curl_slist_free_all(headers); + long code = 0; curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &code); if (res != CURLE_OK) { @@ -396,7 +400,6 @@ SentAsyncWebRequest::Impl::Impl(SentAsyncWebRequest* self, AsyncWebRequest const curl_easy_cleanup(curl); return this->error(response_str, code); } - curl_slist_free_all(headers); curl_easy_cleanup(curl); AWAIT_RESUME(); @@ -469,8 +472,8 @@ bool SentAsyncWebRequest::Impl::finished() const { void SentAsyncWebRequest::Impl::error(std::string const& error, int code) { auto lock = std::unique_lock(m_statusMutex); - m_statusCV.wait(lock, [this]() { - return !m_paused; + m_statusCV.wait(lock, [this]() { + return !m_paused; }); Loader::get()->queueInMainThread([this, error, code]() { {