[patch] краш на UnloadGrid
Устраняет несколько видов крашей связанных с выгрузкой гридов, вот один из них http://paste2.org/p/856730
Взят отсюда http://github.com/SilverIce/mangos/c...9086ede3e28f9a Автор: SilverIce Код:
diff --git a/src/game/Map.cpp b/src/game/Map.cpp |
У меня наоборот :swoon2:
Без этого патча работал по 2-е суток со средним онлайном около 180. Сегодня уже три раза крашнулся: Код:
004DE7F4 00000000 MapInstanced::RemoveGridMapReference+D4 Добавлю: Проблема то ясна - попытка доступа по указателю указывающему в "небо". Почему-то в коде не используется общепринятая практика зануляющая указатели при чистке. Тогда такой проблемы в принципе бы быть не могло... |
Я пере-просмотрел код и не вижу ничего корректного в патче.
Мы вибираем наборы ячеек вокруг конкретной в которой стоит игрок. +- на определенное колличество. Операторы << -= >> += определены так что всегда возвращают номер ячейки не выходящей за пределы (0..LIMIT-1) Соответствеено цикл _должен_ включать правый пограничный номер. Т.е. _должен_ быть в ввиде y <= end_cell.y_coord Иначем у вас нарушается симметрия области. Проблема может быть только если CellArea area = Cell::CalculateCellArea(*plr, GetVisibilityDistance()); вычисляет размеры области некоректно |
спасибо за рекламу, но это не совсем мой патч..
у меня end_cell получена таким путем, что по ней обращаться к гриду нельзя - иначе краш а ResizeBorders всегда возвращает существущую ячейку хотя может то что мы перестаем обновлять краевые ячейки и это как то и влияет на уменьшения крашей с unload grid, но не прямо.. |
Цитата:
Цитата:
|
Текущее время: 23:04. Часовой пояс GMT +3. |
ru-mangos.ru - Русское сообщество MaNGOS