Remove FileReader callbacks before assigning new ones

This fixes the assert raised on overwriting event handlers

Fixes: QTBUG-113041
Change-Id: Ie2afe09f4111ea542297b82a51382f1eb04ec960
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
Reviewed-by: Aleksandr Reviakin <aleksandr.reviakin@qt.io>
This commit is contained in:
Mikolaj Boc 2023-04-21 16:07:22 +02:00
parent 0198611fd4
commit 07a736db6a

View File

@ -623,17 +623,20 @@ void FileReader::readAsArrayBuffer(const Blob &blob) const
void FileReader::onLoad(const std::function<void(emscripten::val)> &onLoad) void FileReader::onLoad(const std::function<void(emscripten::val)> &onLoad)
{ {
m_onLoad.reset(new EventCallback(m_fileReader, "load", onLoad)); m_onLoad.reset();
m_onLoad = std::make_unique<EventCallback>(m_fileReader, "load", onLoad);
} }
void FileReader::onError(const std::function<void(emscripten::val)> &onError) void FileReader::onError(const std::function<void(emscripten::val)> &onError)
{ {
m_onError.reset(new EventCallback(m_fileReader, "error", onError)); m_onError.reset();
m_onError = std::make_unique<EventCallback>(m_fileReader, "error", onError);
} }
void FileReader::onAbort(const std::function<void(emscripten::val)> &onAbort) void FileReader::onAbort(const std::function<void(emscripten::val)> &onAbort)
{ {
m_onAbort.reset(new EventCallback(m_fileReader, "abort", onAbort)); m_onAbort.reset();
m_onAbort = std::make_unique<EventCallback>(m_fileReader, "abort", onAbort);
} }
emscripten::val FileReader::val() emscripten::val FileReader::val()