[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