XaeroX писал: Потому что Мастер не хочет загружать файлы для себя. Он хочет загружать файлы для всех!
Всё правильно сказал!
Дядя Миша я могу ошибваться, конечно, но ЛФФМ или Ком_Парсе ожидает размер буфера 1024, и если в файле попадётся строка, скажем, больше 255 (в твоём примере), будет медный таз.
Кроме того, если, как кто-то писал в каком-то туторе, этим ЛФФМ чекать файлы на наличие (например, модельки, чтоб не крошилось), халва вылетает с очередными быдлолимитами. На ФРЕЕ_ФИЛЕ() ей глубоко покакать. Я стараюсь его избегать, когда возможно.
Процитирую кодик, чтоб его на той странице не искать:
~ X ~ писал: я могу ошибваться, конечно, но ЛФФМ или Ком_Парсе ожидает размер буфера 1024, и если в файле попадётся строка, скажем, больше 255 (в твоём примере), будет медный таз.
LOAD_FILE_FOR_ME ничего не ожидает. Он возвращает готовый буффер.
А насчёт COM_ParseFile, да - ты отчасти угадал. Я забыл показать одну вещь
C++ Source Code:
char *COM_ParseFileExt( char *data, char *token, long token_size );
В принципе ты бы мог это знать, если бы сорцы ксаш-мода изучал. Так что даже размер буффера в 1 символ к переполнению не приведёт.
Цитата:
~ X ~ писал: Кроме того, если, как кто-то писал в каком-то туторе, этим ЛФФМ чекать файлы на наличие (например, модельки, чтоб не крошилось), халва вылетает с очередными быдлолимитами. На ФРЕЕ_ФИЛЕ() ей глубоко покакать.
Ну чисто теоретически давай предположим, что да, действительно вылетает, кроме того полная загрузка файла в память только ради того, чтобы убедиться в его наличии действительно неполезна. Но ведь я давным давно уже отказался от такого способа проверки. Новый способ выглядит вот так:
C++ Source Code:
1
unsignedshort UTIL_PrecacheMovie( constchar *s )
2
{
3
int iCompare;
4
char path[64];
5
6
Q_snprintf( path, sizeof( path ), "media/%s", s );
7
8
// verify file exists
9
// g-cont. idea! use COMPARE_FILE_TIME instead of LOAD_FILE_FOR_ME
10
if( COMPARE_FILE_TIME( path, path, &iCompare ))
11
{
12
return g_engfuncs.pfnPrecacheEvent( 1, s );
13
}
14
15
ALERT( at_console, "Warning: video (%s) not found!\n", s );
16
17
return 0;
18
}
Это и в халфе прекрасно работает, просто в ксаше мне не надо всё подряд чекать, т.к. он и сам на уровне движка нормально к этому относится. Но сам механизм и для халфы актуален, да. И это бы ты тоже мог подсмотреть в ксаш-моде.
Цитата:
~ X ~ писал: Никто ничего странного не заметил? Например, undefined behavior?
Если рассматривать функцию в сферическом ваккуме, то он там есть.
Если в рабочем окружении - то его там нет. Всё относительно, например.
Ну можешь добавить туда вначале text[0] = '\0'; раз тебя это так расстраивает. А еще поменять все int на uint32_t.
~ X ~ писал: Попался char * - и ты в луже со своим убер-макросом.
Ну очевидно же, что у меня char* не попадается. А если у тебя попадается, то это признак неоптимальной архитектуры
Как вариант - можно передать длину буффера вместе с указателем, следующим аргументом. Можно даже сделать этот аргумент в виде uint32_t.
Так что вы мне вот вот это вот бросьте. Писать в указатель, не зная размера буффера. Этож надо додуматься. Это только ты и вальва таким занимаетесь.
Цитата:
~ X ~ писал: потом читать жалобы что я пырил твои коды? б) тащить к себе чужие баги?
Тебя насильно заставляют читать?
Цитата:
~ X ~ писал: почему_t? Это твой личный мем?
ты не знаешь что такое _t ? Становится всё интереснее.
Цитата:
~ X ~ писал: К тому же, нехорошо чужими идеями хвастаться!
Если ты сейчас украл у меня эту идею, то это не делает её твоей, понимаешь.
Цитата:
~ X ~ писал: Нет там таких переменных.
Есть.
Цитата:
~ X ~ писал: ГетГамеДескрипшен() при каждом обращении в файл лезет...
>что я пырил твои коды
Извините, что вклиниваюсь в разговор, но как можно потырить то что и так свободно? На моей памяти такое только Денис Попов умудрился провернуть.
thambs можно. В этом контексте "пырить" == "копировать". А речь идёт о том, что я буду потом получать миллиарды каментов от Ф****** и его клонов, что "половина ыгздыэма списана с ксаша". Вот в качестве превентивных мер.
Если бы XDM был бы списан с ксаша, может он бы стабильнее работал (кроме предиктинга).
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
~ X ~ писал: Это всего лишь "Пользователи, просматривающие тему".
А пользователи, просматривающие тему не могут быть твоими воображаемыми друзьями что-ли? Ты давай не взывай к аудитории.
Она же понимает, что твои вопросы риторические, навроде "есть ли жызь на марсе", т.е. ответ не требуется.
Дядя Миша ты настолько фанатично уверен в собственной непогрешимости? Я не понимаю. Ну, сказали же, что есть баги. Что ты мечешься так? Сам бы уже 10 раз нашёл, исправил и забыл. В привате эту тему уже обсудили и забыли.
Я-то в курсе, кто что нашёл. Только я постить не буду потому что неспортивно и скажут что я заангажирован. Могу только выдать имена и явки тех, кто знает. )