diff --git a/sim/group.lua b/sim/group.lua index b4ac9a5..8154ec2 100644 --- a/sim/group.lua +++ b/sim/group.lua @@ -45,6 +45,7 @@ function Group.new() net.state_num[0] = 0 net.in_queue[0] = 0 net.update_tick[0] = 0 + net.gates_update_c = ffi.cast("struct Gate**", 0) net.c = ffi.new("struct Net") net.c.state = net.state @@ -52,7 +53,8 @@ function Group.new() net.c.in_queue = net.in_queue net.c.update_tick = net.update_tick net.c.num_gates_update = net.num_gates_update - net.c.gates_update_c = ffi.cast("struct Gate**", 0) + net.c.gates_update_c = net.gates_update_c + net.c.id = net.id return net @@ -242,8 +244,9 @@ function Group.rebuild_ports(net) end end end - net.gates_update_c = ffi.new("struct Gate*["..(net.num_gates_update[0]).."]") + net.gates_update_c = ffi.new("struct Gate*["..(net.num_gates_update[0]+1).."]") for i = 0, net.num_gates_update[0]-1 do net.gates_update_c[i] = net.gates_update[i+1].c end + net.c.gates_update_c = net.gates_update_c end diff --git a/sim/simulation.lua b/sim/simulation.lua index d635246..6ba8a8f 100644 --- a/sim/simulation.lua +++ b/sim/simulation.lua @@ -293,7 +293,7 @@ end function Simulation.dequeuegroup(sim, group) if group.in_queue[0]~=0 then - array_remove(sim.groupqueue, group.c, true) + array_remove(sim.groupqueue, group, true) sim.num_groupqueue = sim.num_groupqueue - 1 group.in_queue[0] = 0 end