Тема: CSWOWD (форк)
Показать сообщение отдельно
Старый 26.11.2011, 20:02   #336
Кот ДаWINчи
Умный
 
Аватар для Кот ДаWINчи
 
Регистрация: 07.03.2010
Адрес: Северный Урал (60°сш, 60°вд)
Сообщений: 330
Сказал(а) спасибо: 82
Поблагодарили 399 раз(а) в 120 сообщениях
Записей в дневнике: 30
Кот ДаWINчи Реально хороший человекКот ДаWINчи Реально хороший человекКот ДаWINчи Реально хороший человекКот ДаWINчи Реально хороший человекКот ДаWINчи Реально хороший человек
Отправить сообщение для Кот ДаWINчи с помощью ICQ Отправить сообщение для Кот ДаWINчи с помощью Skype™
По умолчанию

Нашел еще один косяк в коде, связанный с пхп 5.3.х. Как будем вылавливать - не знаю. Видимо только по коду и логам.
Заключается косяк в том, что в некоторых функциях автор, не объявляя заранее массива, начинает пользоваться им в цикле. При этом не гарантируется, что цикл хотя бы раз в него что-нибудь запишет. А потом этот несуществующий массив подставляется в функцию, где он должен быть проинициализирован на 100% т.к. к нему добавляются еще данные.

Результат - функция не производит вычислений.
решение - перед использованием сделать присвоение пустого массива.

Пример:
Файл report_generator.php (строка 1636)
Цитата:
function castByCreature($creature)
{
global $wDB, $dDB;
$spell_list = array();
// By creature fields
for ($i=1;$i<5;$i++) if ($creature['spell'.$i]) $spell_list[] = $creature['spell'.$i];
// By event AI table
for ($i=1;$i<=3;$i++)
$spell_list = array_merge($spell_list, $dDB->selectCol('SELECT `action1_param'.$i.'` as `id` FROM `creature_ai_scripts` WHERE `creature_id` = ?d AND `action'.$i.'_type` = 11', $creature['entry']));
if (count($spell_list))
$this->doRequirest('`id` IN (?a)', array_unique($spell_list));
}
В этом примере косяк на функции array_merge. При добавлении "$spell_list = array();" - ошибка (нотис) уходит.

Последний раз редактировалось Кот ДаWINчи; 26.11.2011 в 20:04.
Кот ДаWINчи вне форума   Ответить с цитированием
2 пользователя(ей) сказали cпасибо:
KiriX (28.11.2011), NeatElves (26.11.2011)