Laurențiu,

Many GDAL functions can return nullptr (e.g. OSRGetName, OSRGetAuthorityCode etc.), but it's not clear if they set an error message that can be retrieved using CPLGetLastErrorMsg. I tried to check the code, but CPLErrorSetState isn't called from many places, so I'm probably missing something like a PROJ/GEOS error handler that sets it.

- OSRGetName() would return null only if the SRS is invalid/unset (you won't get any CPLError() in that situation). If a unlikely memory allocation error would occur in PROJ, I believe, but I'm not completely sure, that PROJ would emit a PROJ error that would be transformed as a GDAL CE_Failure through the osr_proj_logger() PROJ-error handler installed in ogr/ogr_proj_p.cpp.

- similarly for OSRGetAuthorityCode(). Returns null on invalid/unset SRS or SRS without identifier, without emitting a CPLError().   And same as above if the error occurs within PROJ


Is there any rule-of-thumb for figuring out when CPLGetLastErrorMsg should be used?

No. If you are paranoid about that, reset the error state with CPLErrorReset() before calling a function and check CPLGetLastErrorType() == CE_Failure after, but probably only if the return code of the function is an error. In some circumstances, a function might return a valid output, but a CE_Failure can be emitted by deep layers of GDAL but recovered by upper layers that will miss resetting the error state.

Even

--
http://www.spatialys.com
My software is free, but my time generally not.
Butcher of all kinds of standards, open or closed formats. At the end, this is 
just about bytes.
_______________________________________________
gdal-dev mailing list
gdal-dev@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/gdal-dev

Reply via email to