Skip to content

Commit

Permalink
Few bug-fixes (out of range vector access)
Browse files Browse the repository at this point in the history
  • Loading branch information
nadult committed Oct 10, 2017
1 parent 637a1bd commit 26de788
Show file tree
Hide file tree
Showing 5 changed files with 22 additions and 5 deletions.
2 changes: 1 addition & 1 deletion libfwk
Submodule libfwk updated 1 files
+1 −0 src/base.cpp
4 changes: 2 additions & 2 deletions src/gfx/scene_renderer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -159,12 +159,12 @@ void SceneRenderer::render() {
PodArray<char> graph(1024);
PodArray<GNode> gdata(32);

for(int g = 0; g < (int)grid.size();) {
for(int g = 0; g < grid.size();) {
int node_id = grid[g].first;
int grid_x = node_id % xNodes, grid_y = node_id / xNodes;

int count = 0;
while(grid[g + count].first == node_id && g + count < (int)grid.size())
while(g + count < grid.size() && grid[g + count].first == node_id)
count++;

if((int)graph.size() < count * count)
Expand Down
3 changes: 2 additions & 1 deletion src/hud/multi_player_menu.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -232,7 +232,8 @@ namespace hud {
m_servers.clear();
}

Address sel_address = m_grid->selectedRow() != -1? m_servers[m_grid->selectedRow()].address : Address();
int index = m_grid->selectedRow();
Address sel_address = m_servers.inRange(index)? m_servers[index].address : Address();

m_servers.clear();
for(int n = 0; n < (int)new_data.size(); n++) {
Expand Down
3 changes: 2 additions & 1 deletion src/ui/window.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -102,8 +102,9 @@ namespace ui

if(m_children[n]->m_is_closing) {
PWindow window = m_children[n];
auto closing_value = m_children[n]->m_closing_value;
m_children.erase(m_children.begin() + n);
sendEvent(window.get(), Event::window_closed, m_children[n]->m_closing_value);
sendEvent(window.get(), Event::window_closed, closing_value);
n--;
}
else if(m_children[n]->m_is_popup)
Expand Down
15 changes: 15 additions & 0 deletions todo.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,18 @@
- Segfault in server (on the client as well):
libfwk/include/fwk_vector.h:145: Assertion failed: inRange(idx)
Backtrace:
src/base.cpp:210 (anonymous namespace)::assertFailed (file=<optimized out>, line=<optimized out>, text=<optimized out>)
src/grid.cpp:103 Grid::add (this=<optimized out>, object_id=<optimized out>, def=...)
src/grid.cpp:154 Grid::update (this=0x7fa9140009a8, idx=46, object=...)
src/game/entity_map.cpp:90 game::EntityMap::update (this=<optimized out>, index=46)
src/game/world.cpp:153 game::World::simulate (this=<optimized out>, time_diff=0.016737945000386389)
src/io/game_loop.cpp:76 io::GameLoop::onTick (this=0x2ee9100, time_diff=0.016737945000386389)
src/io/main_menu_loop.cpp:185 io::MainMenuLoop::onTick (this=0x1a8d0c0, time_diff=0.016737945000386389)
src/game.cpp:35 main_loop (device=...)
src/gfx/gfx_device.cpp:186 (anonymous namespace)::GfxDevice::runMainLoop (this=0x7ffd9917d9c0, main_loop_func=0x51f2a0 <main_l...
src/game.cpp:142 safe_main (argc=<optimized out>, argv=<optimized out>)
src/game.cpp:157 main (argc=17, argv=0x8abce60)

Potential problems with libfwk updates:
- intersection(segment, something) returns parameter within range (0, 1)
previously FreeFT expected (0, segment length)
Expand Down

0 comments on commit 26de788

Please sign in to comment.