@@ -1346,10 +1346,8 @@ static void encoderEngine(const int ccode, const encodeRec *enc, const int stop_
13461346 from = firstrec (ccode );
13471347 upto = lastrec (ccode );
13481348
1349- if (ccode != ccode_earth ) {
1350- if (!fitsInside (& enc -> coord32 , upto )) {
1351- return ;
1352- }
1349+ if (!fitsInside (& enc -> coord32 , upto )) {
1350+ return ;
13531351 }
13541352
13551353 ///////////////////////////////////////////////////////////
@@ -1393,7 +1391,7 @@ static void encoderEngine(const int ccode, const encodeRec *enc, const int stop_
13931391
13941392 if (requiredEncoder < 0 || requiredEncoder == i ) {
13951393 const int cc = (ccode_override >= 0 ? ccode_override : ccode );
1396- if (* result && enc -> mapcodes && enc -> mapcodes -> count < MAX_NR_OF_MAPCODE_RESULTS ) {
1394+ if (* result && enc -> mapcodes && ( enc -> mapcodes -> count < MAX_NR_OF_MAPCODE_RESULTS ) ) {
13971395 char * s = enc -> mapcodes -> mapcode [enc -> mapcodes -> count ++ ];
13981396 if (cc == ccode_earth ) {
13991397 strcpy (s , result );
@@ -1584,11 +1582,7 @@ static int decoderEngine(decodeRec *dec) {
15841582 err = decodeGrid (dec , i , 0 );
15851583
15861584 // first of all, make sure the zone fits the country
1587- if ((err == 0 ) && (ccode != ccode_earth )) {
1588- if (!restrictZoneTo (& dec -> zone , & dec -> zone , boundaries (upto ))) {
1589- err = -2999 ;
1590- }
1591- }
1585+ restrictZoneTo (& dec -> zone , & dec -> zone , boundaries (upto ));
15921586
15931587 if ((err == 0 ) && isRestricted (i )) {
15941588 int nrZoneOverlaps = 0 ;
@@ -1659,9 +1653,7 @@ static int decoderEngine(decodeRec *dec) {
16591653 } // for
16601654 }
16611655
1662- if (ccode != ccode_earth ) {
1663- restrictZoneTo (& dec -> zone , & dec -> zone , boundaries (lastrec (ccode )));
1664- }
1656+ restrictZoneTo (& dec -> zone , & dec -> zone , boundaries (lastrec (ccode )));
16651657
16661658 if (isEmpty (& dec -> zone )) {
16671659 err = -2222 ;
@@ -1990,24 +1982,23 @@ static int encodeLatLonToMapcodes_internal(char **v, Mapcodes *mapcodes, double
19901982 if (tc <= 0 ) // ALL results?
19911983 {
19921984#ifdef FAST_ENCODE
1993- int HOR = 1 ;
1985+ const int sum = enc .coord32 .lon + enc .coord32 .lat ;
1986+ int coord = enc .coord32 .lon ;
19941987 int i = 0 ; // pointer into redivar
19951988 for (; ;) {
1996- const int v2 = redivar [i ++ ];
1997- HOR = 1 - HOR ;
1998- if (v2 >= 0 && v2 < 1024 ) { // leaf?
1989+ const int r = redivar [i ++ ];
1990+ if (r >= 0 && r < 1024 ) { // leaf?
19991991 int j ;
2000- const int nr = v2 ;
2001- for (j = 0 ; j <= nr ; j ++ ) {
2002- int ctry = (j == nr ? ccode_earth : redivar [i + j ]);
1992+ for (j = 0 ; j <= r ; j ++ ) {
1993+ const int ctry = (j == r ? ccode_earth : redivar [i + j ]);
20031994 encoderEngine (ctry , & enc , stop_with_one_result , extraDigits , requiredEncoder , -1 );
20041995 if ((stop_with_one_result || requiredEncoder >= 0 ) && enc .mapcodes -> count > 0 ) { break ; }
20051996 }
20061997 break ;
20071998 }
20081999 else {
2009- const int coord = ( HOR ? enc . coord32 . lon : enc . coord32 . lat ) ;
2010- if (coord > v2 ) {
2000+ coord = sum - coord ;
2001+ if (coord > r ) {
20112002 i = redivar [i ];
20122003 }
20132004 else {
0 commit comments