]> granicus.if.org Git - postgis/commitdiff
Fixed a bug in popbyte. Trapped WKB endiannes errors.
authorSandro Santilli <strk@keybit.net>
Mon, 20 Sep 2004 14:14:43 +0000 (14:14 +0000)
committerSandro Santilli <strk@keybit.net>
Mon, 20 Sep 2004 14:14:43 +0000 (14:14 +0000)
git-svn-id: http://svn.osgeo.org/postgis/trunk@852 b70326c6-7e19-0410-871a-916f4a2858ee

loader/pgsql2shp.c

index 4c6ff9c7f97e2e812c1a0698d3dd8652b98a835f..d76bc1a89b26f69d6fb24dc5412b3252728cfc98 100644 (file)
@@ -10,6 +10,9 @@
  * 
  **********************************************************************
  * $Log$
+ * Revision 1.55  2004/09/20 14:14:43  strk
+ * Fixed a bug in popbyte. Trapped WKB endiannes errors.
+ *
  * Revision 1.54  2004/09/20 13:49:27  strk
  * Postgis-1.x support (LWGEOM) added.
  * postgis version detected at runtime.
@@ -398,9 +401,16 @@ shape_creator_wrapper_WKB(byte *str, int idx)
        byte *ptr = str;
        uint32 type;
        int is3d;
+       int wkb_big_endian;
 
        // skip byte order
-       skipbyte(&ptr);
+       //skipbyte(&ptr);
+       wkb_big_endian = ! popbyte(&ptr);
+       if ( wkb_big_endian != big_endian )
+       {
+               fprintf(stderr, "Wrong WKB endiannes, dunno how to flip\n");
+               exit(1);
+       }
 
        // get type
        type = getint(ptr);
@@ -2462,9 +2472,8 @@ byte getbyte(byte *c) {
        return *((char*)c);
 }
 
-// #define popbyte(x) *x++
 byte popbyte(byte **c) {
-       return *((byte*)*c++);
+       return *((*c)++);
 }
 
 uint32 popint(byte **c) {