<div>Dear Mateusz Łoskot,</div>
<div>Thanks for your suggestion.But I have made a mistake while pasting my code . The actual code is as follows and it still has the problem running in XP. I have also added the&nbsp;check for NULL layer as you have suggested. In XP i get the output of &quot;printf( &quot;%.3f,%.3f\n&quot;, poPoint-&gt;getX(), poPoint-&gt;getY() );&quot; for few polygons and then the application crashes. 
</div>
<div>&nbsp;</div>
<div>Best Regards,</div>
<div>N.Vidhiyadharan<br>&nbsp;</div>
<div>
<p>#include &quot;stdafx.h&quot;<br>#include &quot;ogrsf_frmts.h&quot;</p>
<p><br>int main()</p>
<p>{</p>
<p>&nbsp;OGRRegisterAll();<br>&nbsp;&nbsp;&nbsp; OGRDataSource&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *poDS;<br>&nbsp;&nbsp;&nbsp; poDS = OGRSFDriverRegistrar::Open( &quot;F:\\india\\india_ds.shp&quot;, FALSE );<br>&nbsp;&nbsp;&nbsp; if( poDS == NULL )<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf( &quot;Open failed.\n%s&quot; ); 
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit( 1 );<br>&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; OGRLayer&nbsp; *poLayer;<br>&nbsp;&nbsp;&nbsp; poLayer = poDS-&gt;GetLayerByName( &quot;india_ds&quot; );<br>&nbsp;&nbsp;&nbsp; OGRFeature *poFeature;<br>&nbsp;&nbsp;&nbsp; poLayer-&gt;ResetReading();<br>&nbsp;if (NULL == poLayer)<br>&nbsp; {<br>&nbsp;&nbsp; printf(&quot;Layer not found\n&quot;); 
<br>&nbsp;&nbsp; OGRDataSource::DestroyDataSource(poDS);<br>&nbsp;&nbsp; return -1;<br>&nbsp;}<br>&nbsp;&nbsp;&nbsp; while( (poFeature = poLayer-&gt;GetNextFeature()) != NULL )<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OGRFeatureDefn *poFDefn = poLayer-&gt;GetLayerDefn();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int iField; 
</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for( iField = 0; iField &lt; poFDefn-&gt;GetFieldCount(); iField++ )<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OGRFieldDefn *poFieldDefn = poFDefn-&gt;GetFieldDefn( iField );</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if( poFieldDefn-&gt;GetType() == OFTInteger )<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf( &quot;%d,&quot;, poFeature-&gt;GetFieldAsInteger( iField ) );<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else if( poFieldDefn-&gt;GetType() == OFTReal )<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf( &quot;%.3f,&quot;, poFeature-&gt;GetFieldAsDouble(iField) ); 
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else if( poFieldDefn-&gt;GetType() == OFTString )<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf( &quot;%s,&quot;, poFeature-&gt;GetFieldAsString(iField) );<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf( &quot;%s,&quot;, poFeature-&gt;GetFieldAsString(iField) ); 
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OGRGeometry *poGeometry;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; poGeometry = poFeature-&gt;GetGeometryRef();<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if( poGeometry != NULL <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &amp;&amp; wkbFlatten(poGeometry-&gt;getGeometryType()) == wkbPoint )<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OGRPoint *poPoint = (OGRPoint *) poGeometry;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf( &quot;%.3f,%.3f\n&quot;, poPoint-&gt;getX(), poPoint-&gt;getY() );<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf( &quot;no point geometry\n&quot; );<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp; <br>&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if( poGeometry != NULL 
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &amp;&amp; wkbFlatten(poGeometry-&gt;getGeometryType()) == wkbPolygon )<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;OGRPolygon *poPolygon = (OGRPolygon *)poGeometry ;<br>&nbsp;&nbsp;&nbsp;OGRLinearRing *poLinearRing ;<br>&nbsp;&nbsp;&nbsp;poLinearRing = poPolygon-&gt;getExteriorRing(); 
<br>&nbsp;&nbsp;&nbsp;OGRPoint *poPoint = (OGRPoint *) poGeometry;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;int i2 ;<br>&nbsp;&nbsp;&nbsp;int i3&nbsp; = poLinearRing-&gt;getNumPoints();<br>&nbsp;&nbsp;&nbsp;for(i2=0;i2&lt;i3;i2++){<br>&nbsp;&nbsp;&nbsp;&nbsp;poLinearRing-&gt;getPoint(i2,poPoint);<br>&nbsp;&nbsp;&nbsp;&nbsp;printf( &quot;%.3f,%.3f\n&quot;, poPoint-&gt;getX(), poPoint-&gt;getY() ); 
<br>&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf( &quot;no polygon geometry\n&quot; );<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; //OGRFeature::DestroyFeature( poFeature );&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;OGRFeature::DestroyFeature( poFeature );<br>&nbsp;&nbsp;&nbsp; OGRDataSource::DestroyDataSource( poDS );<br>&nbsp;return 0;<br>}</p></div>