Fix critical map issue
This commit is contained in:
parent
7a715eb931
commit
7689a50bce
4 changed files with 15 additions and 13 deletions
|
@ -49,7 +49,7 @@ public class BinaryInspector {
|
|||
// test cases show info
|
||||
|
||||
|
||||
// inspector(new String[]{/*"-vmap", "-bbox=-121.785,37.35,-121.744,37.33", */"/home/victor/projects/OsmAnd/data/osm-gen/Map.obf"});
|
||||
// inspector(new String[]{/*"-vmap", "-bbox=-121.785,37.35,-121.744,37.33", */"/home/victor/projects/OsmAnd/data/osm-gen/Austria_2.obf"});
|
||||
// test case extract parts
|
||||
// test case
|
||||
}
|
||||
|
|
|
@ -61,6 +61,7 @@
|
|||
<string name="tip_recent_changes_0_8_2_t">Changes in 0.8.2 :
|
||||
\n\t* Improved Routing
|
||||
\n\t* Dynamic map widgets
|
||||
\n\t* Lock screen button with logging services
|
||||
\n\t* Map settings moved to map screen
|
||||
</string>
|
||||
<string name="continue_follow_previous_route_auto">Previous navigation was unfinished. Continue following it? (%1$s seconds)</string>
|
||||
|
|
|
@ -125,7 +125,7 @@ public class SettingsActivity extends PreferenceActivity implements OnPreference
|
|||
return getString(in);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
System.err.println(e.getMessage());
|
||||
}
|
||||
return defValue;
|
||||
}
|
||||
|
|
|
@ -131,17 +131,17 @@ bool readMapLevel(CodedInputStream* input, MapRoot* root, bool initSubtrees) {
|
|||
break;
|
||||
}
|
||||
case OsmAndMapIndex_MapRootLevel::kBoxesFieldNumber: {
|
||||
if (!initSubtrees) {
|
||||
input->Skip(input->BytesUntilLimit());
|
||||
break;
|
||||
}
|
||||
MapTreeBounds bounds;
|
||||
readInt(input, &bounds.length);
|
||||
bounds.filePointer = input->getTotalBytesRead();
|
||||
if(initSubtrees){
|
||||
int oldLimit = input->PushLimit(bounds.length);
|
||||
readMapTreeBounds(input, &bounds, root);
|
||||
root->bounds.push_back(bounds);
|
||||
input->PopLimit(oldLimit);
|
||||
} else {
|
||||
input->Skip(input->BytesUntilLimit());
|
||||
}
|
||||
int oldLimit = input->PushLimit(bounds.length);
|
||||
readMapTreeBounds(input, &bounds, root);
|
||||
root->bounds.push_back(bounds);
|
||||
input->PopLimit(oldLimit);
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -911,9 +911,10 @@ ResultPublisher* searchObjectsForRendering(SearchQuery* q, bool skipDuplicates,
|
|||
FileInputStream input(file->fd);
|
||||
input.SetCloseOnDelete(false);
|
||||
CodedInputStream cis(&input);
|
||||
cis.SetTotalBytesLimit(INT_MAX, INT_MAX >> 1);
|
||||
cis.Seek(mapIndex->filePointer);
|
||||
int oldLimit = cis.PushLimit(mapIndex->length);
|
||||
readMapIndex(&cis, mapIndex, true);
|
||||
readMapIndex(&cis, &(*mapIndex), true);
|
||||
cis.PopLimit(oldLimit);
|
||||
}
|
||||
// lazy initializing subtrees
|
||||
|
@ -922,10 +923,10 @@ ResultPublisher* searchObjectsForRendering(SearchQuery* q, bool skipDuplicates,
|
|||
FileInputStream input(file->fd);
|
||||
input.SetCloseOnDelete(false);
|
||||
CodedInputStream cis(&input);
|
||||
cis.SetTotalBytesLimit(INT_MAX, INT_MAX >> 1);
|
||||
cis.Seek(mapLevel->filePointer);
|
||||
cis.SetTotalBytesLimit(INT_MAX, INT_MAX >> 2);
|
||||
int oldLimit = cis.PushLimit(mapLevel->length);
|
||||
readMapLevel(&cis, mapLevel, true);
|
||||
readMapLevel(&cis, &(*mapLevel), true);
|
||||
cis.PopLimit(oldLimit);
|
||||
}
|
||||
lseek(file->fd, 0, SEEK_SET);
|
||||
|
|
Loading…
Reference in a new issue