replacing unsafe strcpy operations
This commit is contained in:
parent
845c73af73
commit
2ccd3da5b3
@ -95,7 +95,7 @@ public:
|
||||
|
||||
#ifndef ROUTED
|
||||
template<typename EdgeT>
|
||||
inline void ConstructGrid(DeallocatingVector<EdgeT> & edgeList, char * ramIndexOut, char * fileIndexOut) {
|
||||
inline void ConstructGrid(DeallocatingVector<EdgeT> & edgeList, const char * ramIndexOut, const char * fileIndexOut) {
|
||||
//TODO: Implement this using STXXL-Streams
|
||||
Percent p(edgeList.size());
|
||||
BOOST_FOREACH(EdgeT & edge, edgeList) {
|
||||
@ -316,6 +316,7 @@ private:
|
||||
return (std::fabs(d1 - d2) < FLT_EPSILON);
|
||||
}
|
||||
|
||||
#ifndef ROUTED
|
||||
inline unsigned FillCell(std::vector<GridEntry>& entriesWithSameRAMIndex, const uint64_t fileOffset, boost::unordered_map< unsigned, unsigned > & cellMap ) {
|
||||
std::vector<char> tmpBuffer(32*32*4096,0);
|
||||
uint64_t indexIntoTmpBuffer = 0;
|
||||
@ -393,6 +394,7 @@ private:
|
||||
vectorWithSameFileIndex.clear();
|
||||
return counter;
|
||||
}
|
||||
#endif
|
||||
|
||||
inline void GetContentsOfFileBucketEnumerated(const unsigned fileIndex, std::vector<_GridEdge>& result) const {
|
||||
unsigned ramIndex = GetRAMIndexFromFileIndex(fileIndex);
|
||||
@ -578,9 +580,9 @@ private:
|
||||
|
||||
const static uint64_t END_OF_BUCKET_DELIMITER = boost::integer_traits<uint64_t>::const_max;
|
||||
|
||||
std::ofstream indexOutFile;
|
||||
std::ifstream ramInFile;
|
||||
#ifndef ROUTED
|
||||
std::ofstream indexOutFile;
|
||||
stxxl::vector<GridEntry> entries;
|
||||
#endif
|
||||
std::vector<uint64_t> ramIndexTable; //8 MB for first level index in RAM
|
||||
|
@ -169,14 +169,14 @@ NodeID readBinaryOSRMGraphFromStream(std::istream &in, std::vector<EdgeT>& edgeL
|
||||
edgeList[i]._source = UINT_MAX;
|
||||
} else {
|
||||
//edge i-1 is open in both directions, but edge i is smaller in one direction. Close edge i-1 in this direction
|
||||
edgeList[i-1].forward = ~edgeList[i].isForward();
|
||||
edgeList[i-1].backward = ~edgeList[i].isBackward();
|
||||
edgeList[i-1].forward = !edgeList[i].isForward();
|
||||
edgeList[i-1].backward = !edgeList[i].isBackward();
|
||||
}
|
||||
} else if (edgeFlagsAreSuperSet2) {
|
||||
if(edgeList[i-1].weight() <= edgeList[i].weight()) {
|
||||
//edge i-1 is smaller for one direction. edge i is open in both. close edge i in the other direction
|
||||
edgeList[i].forward = ~edgeList[i-1].isForward();
|
||||
edgeList[i].backward = ~edgeList[i-1].isBackward();
|
||||
edgeList[i].forward = !edgeList[i-1].isForward();
|
||||
edgeList[i].backward = !edgeList[i-1].isBackward();
|
||||
} else {
|
||||
//edge i is smaller and goes in both direction. Throw away edge i-1
|
||||
edgeList[i-1]._source = UINT_MAX;
|
||||
|
@ -92,12 +92,12 @@ int main (int argc, char *argv[]) {
|
||||
ERR("Cannot open " << argv[1]);
|
||||
}
|
||||
|
||||
char nodeOut[1024]; strcpy(nodeOut, argv[1]); strcat(nodeOut, ".nodes");
|
||||
char edgeOut[1024]; strcpy(edgeOut, argv[1]); strcat(edgeOut, ".edges");
|
||||
char graphOut[1024]; strcpy(graphOut, argv[1]); strcat(graphOut, ".hsgr");
|
||||
char ramIndexOut[1024]; strcpy(ramIndexOut, argv[1]); strcat(ramIndexOut, ".ramIndex");
|
||||
char fileIndexOut[1024]; strcpy(fileIndexOut, argv[1]); strcat(fileIndexOut, ".fileIndex");
|
||||
char levelInfoOut[1024]; strcpy(levelInfoOut, argv[1]); strcat(levelInfoOut, ".levels");
|
||||
std::string nodeOut(argv[1]); nodeOut += ".nodes";
|
||||
std::string edgeOut(argv[1]); edgeOut += ".edges";
|
||||
std::string graphOut(argv[1]); graphOut += ".hsgr";
|
||||
std::string ramIndexOut(argv[1]); ramIndexOut += ".ramIndex";
|
||||
std::string fileIndexOut(argv[1]); fileIndexOut += ".fileIndex";
|
||||
std::string levelInfoOut(argv[1]); levelInfoOut += ".levels";
|
||||
|
||||
/*** Setup Scripting Environment ***/
|
||||
if(!testDataFile( (argc > 3 ? argv[3] : "profile.lua") )) {
|
||||
@ -150,7 +150,7 @@ int main (int argc, char *argv[]) {
|
||||
INFO("Generating edge-expanded graph representation");
|
||||
EdgeBasedGraphFactory * edgeBasedGraphFactory = new EdgeBasedGraphFactory (nodeBasedNodeNumber, edgeList, bollardNodes, trafficLightNodes, inputRestrictions, internalToExternalNodeMapping, speedProfile);
|
||||
std::vector<ImportEdge>().swap(edgeList);
|
||||
edgeBasedGraphFactory->Run(edgeOut);
|
||||
edgeBasedGraphFactory->Run(edgeOut.c_str());
|
||||
std::vector<_Restriction>().swap(inputRestrictions);
|
||||
std::vector<NodeID>().swap(bollardNodes);
|
||||
std::vector<NodeID>().swap(trafficLightNodes);
|
||||
@ -163,7 +163,7 @@ int main (int argc, char *argv[]) {
|
||||
*/
|
||||
|
||||
INFO("writing node map ...");
|
||||
std::ofstream mapOutFile(nodeOut, std::ios::binary);
|
||||
std::ofstream mapOutFile(nodeOut.c_str(), std::ios::binary);
|
||||
mapOutFile.write((char *)&(internalToExternalNodeMapping[0]), internalToExternalNodeMapping.size()*sizeof(NodeInfo));
|
||||
mapOutFile.close();
|
||||
std::vector<NodeInfo>().swap(internalToExternalNodeMapping);
|
||||
@ -186,7 +186,7 @@ int main (int argc, char *argv[]) {
|
||||
|
||||
INFO("building grid ...");
|
||||
WritableGrid * writeableGrid = new WritableGrid();
|
||||
writeableGrid->ConstructGrid(nodeBasedEdgeList, ramIndexOut, fileIndexOut);
|
||||
writeableGrid->ConstructGrid(nodeBasedEdgeList, ramIndexOut.c_str(), fileIndexOut.c_str());
|
||||
delete writeableGrid;
|
||||
IteratorbasedCRC32<DeallocatingVector<EdgeBasedGraphFactory::EdgeBasedNode> > crc32;
|
||||
unsigned crc32OfNodeBasedEdgeList = crc32(nodeBasedEdgeList.begin(), nodeBasedEdgeList.end() );
|
||||
@ -216,7 +216,7 @@ int main (int argc, char *argv[]) {
|
||||
unsigned numberOfNodes = 0;
|
||||
unsigned numberOfEdges = contractedEdgeList.size();
|
||||
INFO("Serializing compacted graph");
|
||||
std::ofstream edgeOutFile(graphOut, std::ios::binary);
|
||||
std::ofstream edgeOutFile(graphOut.c_str(), std::ios::binary);
|
||||
|
||||
BOOST_FOREACH(QueryEdge & edge, contractedEdgeList) {
|
||||
if(edge.source > numberOfNodes) {
|
||||
|
Loading…
Reference in New Issue
Block a user