On 20.10.2015 22:20, Andre Vautour wrote:
Hi all,
We are using OGRSFDriver::CopyDataSource() to copy a GML data source
to a memory data source on v1.11.x.
We have encountered a problem where one of the feature tags of a
particular GML file we are trying to read is malformed. What we are
seeing is that an error occurs in OGRGMLLayer::GetNextFeature(), which
gets reported as expected via CPLError().
The problem we are faced with is that that error seems to be reset
using CPLErrorReset() before control returns to the caller of
CopyDataSource(), specifically in OGRDataSource::CopyLayer(). The
result is that the copying silently skips over problematic features.
Is that the expected behavior of copying a data source? Given that
GDAL isn't necessarily exception safe, we've typically used
CPLGetLastErrorNo after control returns to get at such errors that
occur in functions that do not return an error directly in the method
signature. Is there a better approach to error handling that we
could/should be using?
If CPLError gets called then the issue is reported and it is not
silently skipped. I believe the driver writer has judged the issue not
an error but only worth of a warning, thus the GetNextFeature does not
return a NULL, which would lead to immediate return without error reset.
As Even wrote I guess you should make your code to keep an eye on
warnings and not accept the copy if there are any you deem too serious.
Ari
Thanks,
André
_______________________________________________
gdal-dev mailing list
[email protected]
http://lists.osgeo.org/mailman/listinfo/gdal-dev
_______________________________________________
gdal-dev mailing list
[email protected]
http://lists.osgeo.org/mailman/listinfo/gdal-dev