[QGIS Commit] r14066 - trunk/qgis/src/core

svn_qgis at osgeo.org svn_qgis at osgeo.org
Wed Aug 11 16:09:06 EDT 2010


Author: jef
Date: 2010-08-11 20:09:05 +0000 (Wed, 11 Aug 2010)
New Revision: 14066

Modified:
   trunk/qgis/src/core/qgsvectorfilewriter.cpp
Log:
fix #2933

Modified: trunk/qgis/src/core/qgsvectorfilewriter.cpp
===================================================================
--- trunk/qgis/src/core/qgsvectorfilewriter.cpp	2010-08-11 19:03:55 UTC (rev 14065)
+++ trunk/qgis/src/core/qgsvectorfilewriter.cpp	2010-08-11 20:09:05 UTC (rev 14066)
@@ -185,6 +185,8 @@
     return;
   }
 
+  OGRFeatureDefnH defn = OGR_L_GetLayerDefn( mLayer );
+
   QgsDebugMsg( "created layer" );
 
   // create the fields
@@ -193,7 +195,6 @@
   mFields = fields;
   mAttrIdxToOgrIdx.clear();
 
-  int ogrIdx = 0;
   QgsFieldMap::const_iterator fldIt;
   for ( fldIt = fields.begin(); fldIt != fields.end(); ++fldIt )
   {
@@ -261,7 +262,18 @@
       return;
     }
 
-    mAttrIdxToOgrIdx.insert( fldIt.key(), ogrIdx++ );
+    int ogrIdx = OGR_FD_GetFieldIndex( defn, mCodec->fromUnicode( attrField.name() ) );
+    if ( ogrIdx < 0 )
+    {
+      QgsDebugMsg( "error creating field " + attrField.name() );
+      mErrorMessage = QObject::tr( "created field %1 not found (OGR error: %2)" )
+                      .arg( attrField.name() )
+                      .arg( QString::fromUtf8( CPLGetLastErrorMsg() ) );
+      mError = ErrAttributeCreationFailed;
+      return;
+    }
+
+    mAttrIdxToOgrIdx.insert( fldIt.key(), ogrIdx );
   }
 
   QgsDebugMsg( "Done creating fields" );



More information about the QGIS-commit mailing list