From c06141af1eb303e7a4f3b7e5d0c424a7df6b12b9 Mon Sep 17 00:00:00 2001 From: Jack Andersen Date: Sat, 13 Jan 2018 20:43:00 -1000 Subject: [PATCH] Stack reference bug fix --- include/jbus/Endpoint.hpp | 3 ++- lib/Endpoint.cpp | 8 ++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/include/jbus/Endpoint.hpp b/include/jbus/Endpoint.hpp index 9a2b005..2d18e34 100644 --- a/include/jbus/Endpoint.hpp +++ b/include/jbus/Endpoint.hpp @@ -87,8 +87,9 @@ class Endpoint public: KawasedoChallenge() = default; - KawasedoChallenge(Endpoint& endpoint, s32 paletteColor, s32 paletteSpeed, + KawasedoChallenge(s32 paletteColor, s32 paletteSpeed, const u8* programp, s32 length, u8* status, FGBACallback&& callback); + void start(Endpoint& endpoint); bool started() const { return m_started; } u8 percentComplete() const { diff --git a/lib/Endpoint.cpp b/lib/Endpoint.cpp index 25872d6..021818c 100644 --- a/lib/Endpoint.cpp +++ b/lib/Endpoint.cpp @@ -388,10 +388,13 @@ void Endpoint::KawasedoChallenge::_8BootDone(ThreadLocalEndpoint& endpoint, EJoy } } -Endpoint::KawasedoChallenge::KawasedoChallenge(Endpoint& endpoint, s32 paletteColor, s32 paletteSpeed, +Endpoint::KawasedoChallenge::KawasedoChallenge(s32 paletteColor, s32 paletteSpeed, const u8* programp, s32 length, u8* status, FGBACallback&& callback) : x0_pColor(paletteColor), x4_pSpeed(paletteSpeed), x8_progPtr(programp), xc_progLen(length), x10_statusPtr(status), x14_callback(std::move(callback)), x34_bytesSent(0), m_initialized(true) +{} + +void Endpoint::KawasedoChallenge::start(Endpoint& endpoint) { if (endpoint.GBAGetStatusAsync(x10_statusPtr, bindThis(&KawasedoChallenge::_0Reset)) != GBA_READY) @@ -805,8 +808,9 @@ EJoyReturn Endpoint::GBAJoyBootAsync(s32 paletteColor, s32 paletteSpeed, if (programp[0xac] * programp[0xac] * programp[0xac] * programp[0xac] == 0) return GBA_JOYBOOT_ERR_INVALID; - m_joyBoot = KawasedoChallenge(*this, paletteColor, paletteSpeed, programp, length, status, + m_joyBoot = KawasedoChallenge(paletteColor, paletteSpeed, programp, length, status, std::move(callback)); + m_joyBoot.start(*this); if (!m_joyBoot.started()) return GBA_NOT_READY;