[SCM] qtxmlpatterns packaging branch, master, updated. debian/5.3.1-3-1-g526c19d
Adam Majer
adamm at moszumanska.debian.org
Thu Sep 4 16:24:56 UTC 2014
Gitweb-URL: http://git.debian.org/?p=pkg-kde/qt/qtxmlpatterns.git;a=commitdiff;h=526c19d
The following commit has been merged in the master branch:
commit 526c19dfbd54a3709e031ddea389142118ecdd2b
Author: Adam Majer <adamm at zombino.com>
Date: Thu Sep 4 11:23:53 2014 -0500
Cherry-pick stack overflow fix
Author: Kamil Rojewski <kamil.rojewski at gmail.com>
Date: Wed Aug 13 10:38:38 2014 +0200
fix for stack overflow
Recursion in item mapping iterator caused a stack
overflow for large datasets.
Task-number: QTBUG-40153
Change-Id: I693798de0ecfd3a920a3dd270172ce7ec3c13d8d
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki at digia.com>
---
debian/patches/iterator_stack_overflow_fix.diff | 60 +++++++++++++++++++++++++
debian/patches/series | 1 +
2 files changed, 61 insertions(+)
diff --git a/debian/patches/iterator_stack_overflow_fix.diff b/debian/patches/iterator_stack_overflow_fix.diff
new file mode 100644
index 0000000..23de84b
--- /dev/null
+++ b/debian/patches/iterator_stack_overflow_fix.diff
@@ -0,0 +1,60 @@
+commit d1b17740ed4d9b1e3c3ad5898bb8259969dc77df
+Author: Kamil Rojewski <kamil.rojewski at gmail.com>
+Date: Wed Aug 13 10:38:38 2014 +0200
+
+ fix for stack overflow
+
+ Recursion in item mapping iterator caused a stack
+ overflow for large datasets.
+
+ Task-number: QTBUG-40153
+ Change-Id: I693798de0ecfd3a920a3dd270172ce7ec3c13d8d
+ Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki at digia.com>
+
+diff --git a/src/xmlpatterns/iterators/qitemmappingiterator_p.h b/src/xmlpatterns/iterators/qitemmappingiterator_p.h
+index 9dc3b45..3167bd7 100644
+--- a/src/xmlpatterns/iterators/qitemmappingiterator_p.h
++++ b/src/xmlpatterns/iterators/qitemmappingiterator_p.h
+@@ -115,24 +115,28 @@ namespace QPatternist
+ */
+ virtual TResult next()
+ {
+- const TSource sourceItem(m_it->next());
+-
+- if(qIsForwardIteratorEnd(sourceItem))
+- {
+- m_current = TResult();
+- m_position = -1;
+- return TResult();
+- }
+- else
++ while (true)
+ {
+- m_current = m_mapper->mapToItem(sourceItem, m_context);
+- if(qIsForwardIteratorEnd(m_current))
+- return next(); /* The mapper returned null, so continue with the next in the source. */
+- else
++ const TSource &sourceItem = m_it->next();
++ if (qIsForwardIteratorEnd(sourceItem))
+ {
+- ++m_position;
++ m_current = TResult();
++ m_position = -1;
+ return m_current;
+ }
++ else
++ {
++ m_current = m_mapper->mapToItem(sourceItem, m_context);
++ if (qIsForwardIteratorEnd(m_current))
++ {
++ continue; /* The mapper returned null, so continue with the next in the source. */
++ }
++ else
++ {
++ ++m_position;
++ return m_current;
++ }
++ }
+ }
+ }
+
diff --git a/debian/patches/series b/debian/patches/series
index 86215b0..75a71f3 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1 +1,2 @@
disable_network_tests.patch
+iterator_stack_overflow_fix.diff
--
qtxmlpatterns packaging
More information about the pkg-kde-commits
mailing list