From 936dd63d4cc739a26c37543d654d12d267f6be6a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luis=20=C3=81ngel=20San=20Mart=C3=ADn?= Date: Wed, 3 Jan 2018 16:44:10 +0100 Subject: [PATCH] Wait for all threads to finish rendering before deleting the filters, otherwise any PageRender could try to use a filter after deleting it. This is clear example of the risks of sharing raw pointers, the code should be using share_ptr. --- YACReader/render.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/YACReader/render.cpp b/YACReader/render.cpp index b8a31769..6a0fcf19 100644 --- a/YACReader/render.cpp +++ b/YACReader/render.cpp @@ -421,15 +421,16 @@ Render::~Render() comic->deleteLater(); } - foreach(ImageFilter * filter, filters) - delete filter; - foreach(PageRender * pr,pageRenders) if(pr !=0) { if(pr->wait()) delete pr; } + + //TODO move to share_ptr + foreach(ImageFilter * filter, filters) + delete filter; } //Este método se encarga de forzar el renderizado de las páginas. //Actualiza el buffer según es necesario.