[geos-devel] WKBReader Endian detection fails
strk at refractions.net
strk at refractions.net
Tue May 2 10:02:38 EDT 2006
This was a bug. Thanks for pointing out.
It's been fixed in the 2.2 and head branches.
--strk;
On Sat, Apr 29, 2006 at 09:19:39PM -0700, Jeffrey J. Early wrote:
> I'm running GEOS 2.2.1 on a big endian machine (macosx, ppc) and encountered
> troubles when trying to use the c -interface function GEOSGeomFromWKB_buf.
> Specifically it fails to properly set the internal byte ordering to big
> endian. In the file WKBReader.cpp I took the lines (68-70):
>
> // default is machine endian
> if (byteOrder == WKBConstants::wkbNDR)
> dis.setOrder(ByteOrderValues::ENDIAN_LITTLE);
>
> And added,
>
> else
> dis.setOrder(ByteOrderValues::ENDIAN_BIG);
>
> after it. This solved the problem.
>
> I discovered this problem reading some WKB data from a Postgresql database
> via PostGIS and tried to dump it to GEOSGeomFromWKB_buf. This failed with
> the error message "Unknown WKB type ". I was pretty sure the data was valid
> having written my own WKB parser which worked successfully on the same data.
>
> I can't get the CVS code to compile, so I don't know if it's been fixed
> already -- but glancing at the WKBReader.cpp file in CVS I don't see an
> obvious change.
>
> Should this be patched? Or is something else possibly causing this problem?
>
> Jeffrey
More information about the geos-devel
mailing list