Русское сообщество по скриптингу

strcpy крашит сервер

Все вопросы по скриптингу для Metamod, помощь в редактировании плагинов.
Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.

В данном разделе форума разрешено создавать темы, касающие только скриптинга для
Metamod.


Правила при создании новой темы:
1. При вставке кода плагина необходимо использовать тег [pawn], в противном случае, если тег [pawn] не отображает ваш код, можно использовать тег [code].
2. Любые изображения должны быть загружены, как вложения к вашему сообщению.
3. При описании проблемы или запросе на помощь в редактировании плагина обязательно выкладывайте исходник плагина.

strcpy крашит сервер

Сообщение StRiKeR.csF » 07 окт 2014, 00:15

Код: Выделить всё

char* gMenuItems[32][10];
char* itemname = MF_GetAmxString(amx, params[2], 0, &Len);
for(int i = 0; i < 10; i++)
{
   strcpy(gMenuItems[MenuId][i], itemname);
}

Далее краш :(
Подскажете, почему так?
P.S. Всё до strcpy работает 100%, отдебажил. Только вот ошибку не могу никак поймать :(
Чего добился ты и бла, бла, бла
Тут, типа, посыл был, но админ его потёр :(

Skype: nestle.csf
-В чём сила, брат?
-Сила в Debug.log xD
Аватара пользователя
StRiKeR.csF
Скриптер
 
Сообщения: 771
Зарегистрирован: 03 июн 2011, 06:26
Откуда: Кубань
Благодарил (а): 126 раз.
Поблагодарили: 181 раз.
Опыт программирования: Больше трех лет
Языки программирования: C++
C#
JavaScript
PHP(+MySQL)
Assembler

Re: strcpy крашит сервер

Сообщение Asmodai » 07 окт 2014, 00:51

У тебя gMenuItems[][] в никуда ведет. А если куда-то ведет и краш на выходе из функции, то размера строки не хватает.
Аватара пользователя
Asmodai
Адмирал
 
Сообщения: 466
Зарегистрирован: 24 фев 2011, 20:48
Благодарил (а): 0 раз.
Поблагодарили: 393 раз.
Языки программирования: Counter-Strike 1.6

Re: strcpy крашит сервер

Сообщение StRiKeR.csF » 07 окт 2014, 00:58

Частично проблему решил, но вот сейчас такая трабла.
Код: Выделить всё

char* itemname = MF_GetAmxString(amx, params[2], 0, &Len);
printf("[Log] string = %s\n", itemname); //Тут всё ок, выводит test11
strcat(itemname, "^n");
printf("[Log] new string = %s\n", itemname); //Выводит 1^n

Такая же трабла и с strcpy, также выводит 1 :(
Чего добился ты и бла, бла, бла
Тут, типа, посыл был, но админ его потёр :(

Skype: nestle.csf
-В чём сила, брат?
-Сила в Debug.log xD
Аватара пользователя
StRiKeR.csF
Скриптер
 
Сообщения: 771
Зарегистрирован: 03 июн 2011, 06:26
Откуда: Кубань
Благодарил (а): 126 раз.
Поблагодарили: 181 раз.
Опыт программирования: Больше трех лет
Языки программирования: C++
C#
JavaScript
PHP(+MySQL)
Assembler

Re: strcpy крашит сервер

Сообщение Asmodai » 07 окт 2014, 01:30

Памяти скорее всего (наверно всегда при MF_GetAmxString) выделено ровно под длину строки и не добавишь ты туда просто так два символа.
Аватара пользователя
Asmodai
Адмирал
 
Сообщения: 466
Зарегистрирован: 24 фев 2011, 20:48
Благодарил (а): 0 раз.
Поблагодарили: 393 раз.
Языки программирования: Counter-Strike 1.6

Re: strcpy крашит сервер

Сообщение StRiKeR.csF » 07 окт 2014, 01:38

Не трогая даже строку с MF_GetAmxString выходит 1 :(

Код: Выделить всё

char* itemname = MF_GetAmxString(amx, params[2], 0, &Len);
strcat(gMenu[MenuId].items, itemname); //Тут получается 1, а не test11
Чего добился ты и бла, бла, бла
Тут, типа, посыл был, но админ его потёр :(

Skype: nestle.csf
-В чём сила, брат?
-Сила в Debug.log xD
Аватара пользователя
StRiKeR.csF
Скриптер
 
Сообщения: 771
Зарегистрирован: 03 июн 2011, 06:26
Откуда: Кубань
Благодарил (а): 126 раз.
Поблагодарили: 181 раз.
Опыт программирования: Больше трех лет
Языки программирования: C++
C#
JavaScript
PHP(+MySQL)
Assembler

Re: strcpy крашит сервер

Сообщение 6a6kin » 07 окт 2014, 02:32

Посмотри как указатель меняется (и меняется ли вообще), выводи содержимое памяти по указателю до strcat и после, глянь как память меняется.

И лучше, офк, использовать strncat, strncpy.
На заказ не пишу.
Аватара пользователя
6a6kin
Скриптер
 
Сообщения: 332
Зарегистрирован: 09 мар 2010, 16:40
Благодарил (а): 38 раз.
Поблагодарили: 278 раз.

Re: strcpy крашит сервер

Сообщение StRiKeR.csF » 07 окт 2014, 21:39

6a6kin, Помогло :-)
P.S. Да, у меня была логика :(
Чего добился ты и бла, бла, бла
Тут, типа, посыл был, но админ его потёр :(

Skype: nestle.csf
-В чём сила, брат?
-Сила в Debug.log xD
Аватара пользователя
StRiKeR.csF
Скриптер
 
Сообщения: 771
Зарегистрирован: 03 июн 2011, 06:26
Откуда: Кубань
Благодарил (а): 126 раз.
Поблагодарили: 181 раз.
Опыт программирования: Больше трех лет
Языки программирования: C++
C#
JavaScript
PHP(+MySQL)
Assembler


Вернуться в Скриптинг

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7