1 commit d1b17740ed4d9b1e3c3ad5898bb8259969dc77df
2 Author: Kamil Rojewski <kamil.rojewski@gmail.com>
3 Date: Wed Aug 13 10:38:38 2014 +0200
7 Recursion in item mapping iterator caused a stack
8 overflow for large datasets.
10 Task-number: QTBUG-40153
11 Change-Id: I693798de0ecfd3a920a3dd270172ce7ec3c13d8d
12 Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
14 Index: qt4-x11/src/xmlpatterns/iterators/qitemmappingiterator_p.h
15 ===================================================================
16 --- qt4-x11.orig/src/xmlpatterns/iterators/qitemmappingiterator_p.h 2014-09-04 11:47:43.979391542 -0500
17 +++ qt4-x11/src/xmlpatterns/iterators/qitemmappingiterator_p.h 2014-09-04 11:47:43.975391542 -0500
20 virtual TResult next()
22 - const TSource sourceItem(m_it->next());
24 - if(qIsForwardIteratorEnd(sourceItem))
27 - m_current = TResult();
33 - m_current = m_mapper->mapToItem(sourceItem, m_context);
34 - if(qIsForwardIteratorEnd(m_current))
35 - return next(); /* The mapper returned null, so continue with the next in the source. */
37 + const TSource &sourceItem = m_it->next();
38 + if (qIsForwardIteratorEnd(sourceItem))
41 + m_current = TResult();
47 + m_current = m_mapper->mapToItem(sourceItem, m_context);
48 + if (qIsForwardIteratorEnd(m_current))
50 + continue; /* The mapper returned null, so continue with the next in the source. */