Hi all,

attached is a patch which fixes issues with Garmin maps on Big Endian boxes:
- proprly load label offsets in subdiv 2 sects.
- fix bad casts

Cheers, Albrecht.

P.S.: Will build the Mac release this weekend...
Index: src/CGarminPolygon.cpp
===================================================================
--- src/CGarminPolygon.cpp	(Revision 2895)
+++ src/CGarminPolygon.cpp	(Arbeitskopie)
@@ -364,7 +364,7 @@
 
     if(hasV2Label)
     {
-        quint32 offset = *(quint32*)(pData + bs_len);
+        quint32 offset = gar_ptr_load(uint24_t, pData + bs_len);
         bytes_total += 3;
         /// @todo read label information
         lbl_info = offset & 0x3FFFFF;
Index: src/CGarminTile.cpp
===================================================================
--- src/CGarminTile.cpp	(Revision 2895)
+++ src/CGarminTile.cpp	(Arbeitskopie)
@@ -565,7 +565,7 @@
     subdivs.last().rgn_end = gar_load(uint32_t, pRgnHdr->hdr_rgn_t::offset) + gar_load(uint32_t, pRgnHdr->hdr_rgn_t::length);
 
     // read extended NT elements
-    if((gar_load(uint16_t, pTreHdr->hdr_subfile_part_t::length) >= 0x9A) && pTreHdr->tre7_size && (gar_load(uint32_t, pTreHdr->tre7_rec_size) >= sizeof(tre_subdiv2_t)))
+    if((gar_load(uint16_t, pTreHdr->hdr_subfile_part_t::length) >= 0x9A) && pTreHdr->tre7_size && (gar_load(uint16_t, pTreHdr->tre7_rec_size) >= sizeof(tre_subdiv2_t)))
     {
 
         rgnoff = subfile.parts["RGN"].offset;
@@ -578,7 +578,7 @@
         //        const quint32 entries2 = subdivs.size();
 
         bool skipPois = true;
-        if(gar_load(uint32_t, pTreHdr->tre7_rec_size) == sizeof(tre_subdiv2_t)) skipPois = false;
+        if(gar_load(uint16_t, pTreHdr->tre7_rec_size) == sizeof(tre_subdiv2_t)) skipPois = false;
 
         //         for(int i = 0; i < pTreHdr->tre7_rec_size; ++i){
         //             if(i%4 == 0) fprintf(stderr,"\n");

Attachment: pgp0KUg8DkBDU.pgp
Description: PGP signature

------------------------------------------------------------------------------
AppSumo Presents a FREE Video for the SourceForge Community by Eric 
Ries, the creator of the Lean Startup Methodology on "Lean Startup 
Secrets Revealed." This video shows you how to validate your ideas, 
optimize your ideas and identify your business strategy.
http://p.sf.net/sfu/appsumosfdev2dev
_______________________________________________
Qlandkartegt-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/qlandkartegt-users

Reply via email to