[gdal-dev] Under what (if any) conditions would GDALWriteBlock modify data buffer?
Andrew C Aitchison
andrew at aitchison.me.uk
Mon Dec 18 07:18:56 PST 2023
On Mon, 18 Dec 2023, Even Rouault via gdal-dev wrote:
> Hi,
>
> interesting question. No easy answer as it is highly driver dependent. I
> believe that all drivers make sure that the content of the buffer before and
> after the call is the same, but some drivers might temporarily modify it, to
> do byte swapping. For example the HFA driver does that when run on big-endian
> hosts for non-Byte data type. I wouldn't exclude that for formats with
> MSB-byte ordering, a similar situation would happen for little endian hosts.
> So it is definitely not safe to use WriteBlock() with a buffer that would
> come from a read-only section of the calling program. Doc updated to reflect
> that in
> https://github.com/OSGeo/gdal/commit/ea321723dfc69ef3a422b1e3fe4dc9ee0832861d
Did you mean to say
Note that even with eRWFlag==GF_Write, the content of the buffer
might be temporarily modified during the execution of this method
(and eventually restored back to its original content), so it is not
safe to use a buffer stored in a read-only section of the calling
program.
or
Note that even with eRWFlag==GF_Read, ...
--
Andrew C. Aitchison Kendal, UK
andrew at aitchison.me.uk
More information about the gdal-dev
mailing list