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