zzz528
Silver Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Помогите исправить ошибку Подробнее... Ошбка появилась когда длюавдися новый файл использующий функцию ProxyRelease, по вему коду много ещё чего его использует и нормально, и там же есть кодик типа для исправления этой ошибки, но у меня срабатывает именно на этом месте, не понимаю. Код: template <typename T> void ProxyRelease(const char* aName, nsIEventTarget* aTarget, already_AddRefed<T> aDoomed, bool aAlwaysProxy) { // Auto-managing release of the pointer. RefPtr<T> doomed = aDoomed; nsresult rv; if (!doomed || !aTarget) { return; } if (!aAlwaysProxy) { bool onCurrentThread = false; rv = aTarget->IsOnCurrentThread(&onCurrentThread); if (NS_SUCCEEDED(rv) && onCurrentThread) { return; } } nsCOMPtr<nsIRunnable> ev = new ProxyReleaseEvent<T>(aName, doomed.forget()); rv = aTarget->Dispatch(ev, NS_DISPATCH_NORMAL); if (NS_FAILED(rv)) { NS_WARNING("failed to post proxy release event, leaking!"); // It is better to leak the aDoomed object than risk crashing as // a result of deleting it on the wrong thread. } } template <bool nsISupportsBased> struct ProxyReleaseChooser { template <typename T> static void ProxyRelease(const char* aName, nsIEventTarget* aTarget, already_AddRefed<T> aDoomed, bool aAlwaysProxy) { ::detail::ProxyRelease(aName, aTarget, std::move(aDoomed), aAlwaysProxy); } }; template <> struct ProxyReleaseChooser<true> { // We need an intermediate step for handling classes with ambiguous // inheritance to nsISupports. template <typename T> static void ProxyRelease(const char* aName, nsIEventTarget* aTarget, already_AddRefed<T> aDoomed, bool aAlwaysProxy) { ///ЭТО СТРОКА 98 ProxyReleaseISupports(aName, aTarget, ToSupports(aDoomed.take()), aAlwaysProxy); } static void ProxyReleaseISupports(const char* aName, nsIEventTarget* aTarget, nsISupports* aDoomed, bool aAlwaysProxy); }; | |