Ru-MaNGOS

Вернуться   Ru-MaNGOS > Ядро > Патчи > Принятые патчи

Важная информация

Принятые патчи Иногда выкладывают патчи, которые потом в итоге все-таки принимают в ядро.

Повод для гордости.

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 21.05.2010, 00:40   #1
Hantet
Ученый
 
Аватар для Hantet
 
Регистрация: 07.03.2010
Адрес: Санкт-Петербург
Сообщений: 163
Сказал(а) спасибо: 124
Поблагодарили 111 раз(а) в 52 сообщениях
Hantet Скоро придёт к известностиHantet Скоро придёт к известности
Отправить сообщение для Hantet с помощью ICQ
Сообщение [9950][Crash] Turned Objects



Сегодня ненароком уронил свой сервер, пользуясь командой .gobject turn #guid.
Функция отработала (объект пропал и появился в нужном месте), но после чего всё зависло. По идее, в чат должно было написать что-то вроде "Game Object #id turned", однако вместо этого сервер упал.

Благо, на машине (вместе с MaNGOS) у меня стоит MSVC++.
Вылетела ошибка и windows предложил мне отладку программы. В ходе расследования определил, что падение происходит из-за финального PSendSysMessage() (что и требовалось доказать). Далее отладчик сообщил мне первый аргумент этой функции (HEX: 0x00...114 = DEC: 276).

Решил проверить, что же у меня там в базе лежит. Полез в mangos_string, нашёл id 276. АГА, вот оно! Истинная структура: "Game Object |cffffffff|Hgameobject:%d|h[%s]|h|r (GUID: %u) turned". Из этого я понял, что в эту структуру подставляется 3 значения.

Полез в ядро (level2.cpp: bool ChatHandler::HandleGameObjectTurnCommand(const char* args)), и очумел.
Код:
PSendSysMessage(LANG_COMMAND_TURNOBJMESSAGE, obj->GetGUIDLow(), obj->GetGOInfo()->name, obj->GetGUIDLow(), o);
В функцию передавалось не 3, а целых 4 параметра (не считая id mangos_string). Не долго думая, убрал с конца переменную ориентации (зачем ей там быть, это ведь только чат?). Собираю...

Собрал. Теперь команда работает без падения.
Баг? Кривизна моих рук/головы?

Фикс в аттаче (подогнан под 9948).

P.s. Странно только то, что эта ошибка замечена мною даже в ветке 0.12, а никто ничего не отпостил (хотя, может быть потому, что недо-админы не суются к нам, а чОткие пацаны просто не используют эту команду ).
Вложения
Тип файла: patch fix_gobject_turn.patch (518 байт, 18 просмотров)
__________________
Галя: Вот почему когда я пуск делаю и по ярлыку две то запускается, а если вот мне к примеру надо не из пуска её то ничего и в красном показывает, а надо ведь чтобы квадратик жёлтенький открывал и там 3 кнопки должно быть?
admin: О Боже!
admin: Кто-нибудь, пришлите ко мне уборщицу, пусть мой мозг со стен и потолка отмоет

Последний раз редактировалось Hantet; 21.05.2010 в 15:20.
Hantet вне форума  
2 пользователя(ей) сказали cпасибо:
Lightunit (21.05.2010), Vladimir (22.05.2010)
 


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[10193] Use for Transport::Update arg uint32 type as for other world objects newsbot CMaNGOS Commits 0 15.07.2010 04:20
[10147] Dynamic objects not have interactive size. newsbot CMaNGOS Commits 0 03.07.2010 23:23
[9950] Fixed crash at .gobject turn command (at *nix at least) newsbot CMaNGOS Commits 0 22.05.2010 10:04
[9913] Fix TARGET_SCRIPT searcher and also look for objects that are Pet* newsbot CMaNGOS Commits 0 16.05.2010 10:31
[9614] Objects HIGHGUID_MO_TRANSPORT not have entry part in guid. newsbot CMaNGOS Commits 0 24.03.2010 22:00


Текущее время: 22:57. Часовой пояс GMT +3.


ru-mangos.ru - Русское сообщество MaNGOS
Главная цель проекта MaNGOS - обучающая, поэтому разрешается использовать исходный код и собранную программу только для образовательных целей.
Вы не можете использовать MaNGOS в коммерческих целях, а также не разрешается устанавливать публичные серверы на базе MaNGOS.
Любое копирование материалов, информации в любом виде без указания источника - форума Ru-MaNGOS будет считаться нарушением авторских прав и нарушением Уголовного Кодекса РФ, ст. 146 ст. 147.
Перевод vBulletin: zCarot