<div dir="ltr"><div style>Jurgen,</div><div style><br></div>What is the purpose of doing all the extra feature lookup in updateFeature? Just so that don't change all the attributes everytime? I doubt there would be that much overhead to really care, I would even say the getFeature request would be slower then just changing all the attributes each time.  To me this method is broken an shouldn't call getFeatures.  The method is just updateFeature it shouldn't do anything more, especially not change my iterator .  If we want to implement attribute change tracking it should be done on the QgsFeature, which would be easy, not in QgsVectorLayer.<div>

<br></div><div style>You could then just do (in updateFeature) (in python):</div><div style><br></div><div style>attributes = f.getChangedAttributes()</div><div style>  </div><div style>for index, value in attributes.iteritems():</div>

<div style>    layer.changeAttributeValue(id, index, value)</div><div style><br></div><div style>- Nathan</div><div style><br></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Sat, Mar 23, 2013 at 1:21 AM, Jürgen E. <span dir="ltr"><<a href="mailto:jef@norbit.de" target="_blank">jef@norbit.de</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi Nathan,<br>
<div class="im"><br>
On Sat, 23. Mar 2013 at 00:29:03 +1000, Nathan Woodrow wrote:<br>
> If updateFeature is indeed doing feature request inside and breaking the loop<br>
> then that is a bug.  updateFeature should not affect the feature<br>
<br>
</div>The misfeature is that there can only be one active iterator per provider (see<br>
also [1]).  So the feature iterator in updateFeature closes the iterator of the<br>
loop.<br>
<div class="im"><br>
> What should I do if I want to modify features during the loop?<br>
<br>
</div>replacing<br>
<div class="im"><br>
>                      f.setAttribute( field, QVariant( 1 ) )<br>
>                      vectorLayer.updateFeature( f )<br>
<br>
</div>with<br>
<br>
                       vectorLayer.changeAttributeValue( <a href="http://f.id" target="_blank">f.id</a>(), field, 1 )<br>
<br>
should help.<br>
<br>
<br>
Jürgen<br>
<br>
[1] <a href="http://hub.qgis.org/issues/7071#note-6" target="_blank">http://hub.qgis.org/issues/7071#note-6</a><br>
<span class="HOEnZb"><font color="#888888"><br>
--<br>
Jürgen E. Fischer         norBIT GmbH               Tel. +49-4931-918175-31<br>
Dipl.-Inf. (FH)           Rheinstraße 13            Fax. +49-4931-918175-50<br>
Software Engineer         D-26506 Norden               <a href="http://www.norbit.de" target="_blank">http://www.norbit.de</a><br>
committ(ed|ing) to Quantum GIS                         IRC: jef on FreeNode<br>
<br>
--<br>
norBIT Gesellschaft fuer Unternehmensberatung und Informationssysteme mbH<br>
Rheinstrasse 13, 26506 Norden<br>
GF: Jelto Buurman, HR: Amtsgericht Emden, HRB 5502<br>
</font></span><div class="HOEnZb"><div class="h5"><br>
_______________________________________________<br>
Qgis-developer mailing list<br>
<a href="mailto:Qgis-developer@lists.osgeo.org">Qgis-developer@lists.osgeo.org</a><br>
<a href="http://lists.osgeo.org/mailman/listinfo/qgis-developer" target="_blank">http://lists.osgeo.org/mailman/listinfo/qgis-developer</a><br>
</div></div></blockquote></div><br></div>