Lopaskurwa
Active Member
- Joined
- Oct 6, 2017
- Messages
- 873
- Solutions
- 2
- Reaction score
- 49
Getting crash because of Parse newWalk not sure exactly how it happening
---------------------------------------------------Signal caught: SIGSEGVT - Pastebin.com
Pastebin.com is the number one paste tool since 2002. Pastebin is a website where you can store text online for a set period of time.
pastebin.com
C++:
void ProtocolGame::parseNewWalking(NetworkMessage& msg)
{
uint32_t playerWalkId = msg.get<uint32_t>();
int32_t predictiveWalkId = msg.get<int32_t>(); // extension for proxy system, currently not used
Position playerPosition = msg.getPosition(); // local player position before moving, including prewalk
uint8_t flags = msg.getByte(); // 0x01 - prewalk, 0x02 - autowalk
uint16_t numdirs = msg.get<uint16_t>();
if (numdirs == 0 || numdirs > 4096) {
return;
}
std::forward_list<Direction> path;
for (uint16_t i = 0; i < numdirs; ++i) {
uint8_t rawdir = msg.getByte();
auto before_end = path.before_begin();
for (auto& _ : path) {
if (_) {
//remove warning
}
++before_end;
}
switch (rawdir) {
case 1: path.insert_after(before_end, DIRECTION_EAST); break;
case 2: path.insert_after(before_end, DIRECTION_NORTHEAST); break;
case 3: path.insert_after(before_end, DIRECTION_NORTH); break;
case 4: path.insert_after(before_end, DIRECTION_NORTHWEST); break;
case 5: path.insert_after(before_end, DIRECTION_WEST); break;
case 6: path.insert_after(before_end, DIRECTION_SOUTHWEST); break;
case 7: path.insert_after(before_end, DIRECTION_SOUTH); break;
case 8: path.insert_after(before_end, DIRECTION_SOUTHEAST); break;
default: break;
}
}
uint32_t playerId = player->getID();
g_dispatcher.addTask(createTask(std::bind(&ProtocolGame::parseNewWalk, getThis(), playerWalkId, predictiveWalkId, playerId, playerPosition, flags, path)));
}