@@ -165,7 +165,7 @@ public:
165165
166166#if SWIG_VERSION >= 0x040400
167167// Functions to store weak references to iterators (swig >= v4.4)
168- %fragment(" iterator_weakref_funcs " , " header" , fragment=" private_data" ) {
168+ %fragment(" iterator_store " , " header" , fragment=" private_data" ) {
169169static void _process_list (PyObject* list,
170170 Exiv2::container_type::iterator* beg,
171171 Exiv2::container_type::iterator* end) {
@@ -193,7 +193,7 @@ static void invalidate_iterators(PyObject* py_self,
193193 if (list)
194194 _process_list (list, &beg, &end);
195195};
196- static int store_iterator_weakref (PyObject* py_self, PyObject* iterator) {
196+ static int store_iterator (PyObject* py_self, PyObject* iterator) {
197197 PyObject* list = private_store_get (py_self, " iterators" );
198198 if (list)
199199 purge_iterators (list);
@@ -218,18 +218,21 @@ static int store_iterator_weakref(PyObject* py_self, PyObject* iterator) {
218218
219219#if SWIG_VERSION >= 0x040400
220220// clear() invalidates all iterators
221- %typemap(ret, typemap= " iterator_weakref_funcs " ) void clear {
221+ %typemap(ret, fragment= " iterator_store " ) void clear {
222222 invalidate_iterators (self, arg1->begin (), arg1->end ());
223223}
224- // erase() and eraseFamily() may invalidate iterators
225- %typemap(check) Exiv2::container_type::iterator pos {
224+ // erase() and eraseFamily() invalidate some iterators
225+ %typemap(check, fragment=" iterator_store" )
226+ Exiv2::container_type::iterator pos {
226227 invalidate_iterators (self, $1 , $1 );
227228}
228- %typemap(check) (Exiv2::container_type::iterator beg,
229- Exiv2::container_type::iterator end) {
229+ %typemap(check, fragment=" iterator_store" )
230+ (Exiv2::container_type::iterator beg,
231+ Exiv2::container_type::iterator end) {
230232 invalidate_iterators (self, $1 , $2 );
231233}
232- %typemap(check) Exiv2::container_type::iterator& pos {
234+ %typemap(check, fragment=" iterator_store" )
235+ Exiv2::container_type::iterator& pos {
233236 invalidate_iterators (self, *$1 , arg1->end ());
234237}
235238#endif // SWIG_VERSION
@@ -241,7 +244,7 @@ static int store_iterator_weakref(PyObject* py_self, PyObject* iterator) {
241244%newobject Exiv2::container_type::findKey;
242245// Assumes arg1 is the base class parent
243246#if SWIG_VERSION >= 0x040400
244- %typemap(out, fragment=" iterator_weakref_funcs " )
247+ %typemap(out, fragment=" iterator_store " )
245248 Exiv2::container_type::iterator {
246249#else
247250%typemap (out) Exiv2::container_type::iterator {
@@ -252,7 +255,7 @@ static int store_iterator_weakref(PyObject* py_self, PyObject* iterator) {
252255 $typemap (out, container_type##_iterator*);
253256#if SWIG_VERSION >= 0x040400
254257 // Keep weak reference to the Python iterator
255- if (store_iterator_weakref (self, $result)) {
258+ if (store_iterator (self, $result)) {
256259 SWIG_fail;
257260 }
258261#endif // SWIG_VERSION
0 commit comments