Fixes the edge-based-graph factory's edge counter serialization.

The counter for original edges is of type `std::size_t`, but we
serialized `sizeof(unsigned)` number of bytes out to the `.osrm.edges`
file.

We should probably check all writes (analogous for reads) and make the
count parameter dependent on `sizeof(variable)`.

    ag '\.write\((.*), sizeof\((.*)\)\);'
This commit is contained in:
Daniel J. Hofmann 2016-03-17 12:04:20 +01:00 committed by Patrick Niklaus
parent b1c84b598f
commit 25fea558ba

View File

@ -310,7 +310,8 @@ void EdgeBasedGraphFactory::GenerateEdgeExpandedEdges(
}
// writes a dummy value that is updated later
edge_data_file.write((char *)&original_edges_counter, sizeof(unsigned));
edge_data_file.write(reinterpret_cast<const char *>(&original_edges_counter),
sizeof(original_edges_counter));
std::vector<OriginalEdgeData> original_edge_data_vector;
original_edge_data_vector.reserve(1024 * 1024);
@ -475,7 +476,8 @@ void EdgeBasedGraphFactory::GenerateEdgeExpandedEdges(
FlushVectorToStream(edge_data_file, original_edge_data_vector);
edge_data_file.seekp(std::ios::beg);
edge_data_file.write((char *)&original_edges_counter, sizeof(unsigned));
edge_data_file.write(reinterpret_cast<char *>(&original_edges_counter),
sizeof(original_edges_counter));
util::SimpleLogger().Write() << "Generated " << m_edge_based_node_list.size()
<< " edge based nodes";