summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
author Eric Hameleers <alien@slackware.com>2019-05-30 13:35:48 +0000
committer Eric Hameleers <alien@slackware.com>2019-05-30 13:35:48 +0000
commitdc82bdebb7f3ab59e0e5305ef08d88b6754e7ee4 (patch)
tree1d456402f8cd82ee951f61ce66ec22879e6d1d94
parent1f3f2c22d7de15da4beab4bd4553947bfba492db (diff)
downloadasb-dc82bdebb7f3ab59e0e5305ef08d88b6754e7ee4.tar.gz
asb-dc82bdebb7f3ab59e0e5305ef08d88b6754e7ee4.tar.xz
Initial revision
-rw-r--r--evolvotron/build/patches/evolvotron-0.7.1_qt5_crash.patch60
1 files changed, 60 insertions, 0 deletions
diff --git a/evolvotron/build/patches/evolvotron-0.7.1_qt5_crash.patch b/evolvotron/build/patches/evolvotron-0.7.1_qt5_crash.patch
new file mode 100644
index 00000000..f8bd365c
--- /dev/null
+++ b/evolvotron/build/patches/evolvotron-0.7.1_qt5_crash.patch
@@ -0,0 +1,60 @@
+Index: evolvotron-0.7.1/libevolvotron/mutatable_image_computer_farm.cpp
+===================================================================
+--- evolvotron-0.7.1.orig/libevolvotron/mutatable_image_computer_farm.cpp
++++ evolvotron-0.7.1/libevolvotron/mutatable_image_computer_farm.cpp
+@@ -72,19 +72,20 @@ void MutatableImageComputerFarm::fasttra
+ {
+ QMutexLocker lock(&_mutex);
+
+- // \todo: Inefficient starting search again each time. Some problem with erase otherwise though, but might have been task abort mem leak.
+- TodoQueue::iterator it;
+- while (
+- (
+- it=std::find_if(_todo.begin(),_todo.end(),predicate_aborted)
+- )
+- !=
+- _todo.end()
+- )
+- {
+- _done[(*it)->display()].insert(*it);
+- _todo.erase(it);
+- }
++ TodoQueue::iterator it = _todo.begin();
++
++ while (it != _todo.end())
++ {
++ if ((*it)->aborted())
++ {
++ _done[(*it)->display()].insert(*it);
++ it = _todo.erase(it);
++ }
++ else
++ {
++ it++;
++ }
++ }
+ }
+
+ void MutatableImageComputerFarm::push_todo(const boost::shared_ptr<MutatableImageComputerTask>& task)
+@@ -214,7 +215,9 @@ void MutatableImageComputerFarm::abort_f
+ if ((*it)->display()==disp)
+ {
+ (*it)->abort();
+- _todo.erase(it);
++ it = _todo.erase(it);
++ if (it == _todo.end())
++ break;
+ }
+ }
+
+@@ -234,7 +237,9 @@ void MutatableImageComputerFarm::abort_f
+ if ((*it1)->display()==disp)
+ {
+ (*it1)->abort();
+- q.erase(it1);
++ it1 = q.erase(it1);
++ if (it1 == q.end())
++ break;
+ }
+ }
+ }