Переполнение буфера?

Статус
В этой теме нельзя размещать новые ответы.
Сообщения
2
Реакции
0
Всем привет. Решил тут впервые запустить руки в amxx/pawn... Запустил...
Написал плагин. Работает отлично. Решил сделать из него апи используя native. Скомпилировалось. Но...

Условно плагин А(кусками):
C-like:
public plugin_init() {
    register_plugin(PLUGIN, VERSION, AUTHOR)
    server_print("[%s] Connecting to server... Host: %s / Port: %s", PLUGIN, conf[host], conf[port])
}

public plugin_natives ( ) {
    register_library("amxx_test")
    register_native("metric_timing", "metric_timing", true)
    register_native("metric_gauge", "metric_gauge", true)
}

public metric_gauge(s[], value) {
    server_print("KEY: %s", s)
}
сделал inc

C-like:
native metric_timing(stats[], value)
native metric_gauge(stats[], value)
и второй плагин который инклюдит этот inc
и использует метод metric_gauge

C-like:
#include <amxx_metrics>

public plugin_init() {
    register_plugin(PLUGIN, VERSION, AUTHOR)
    new arg[1]

    set_task(1.0, "collect", 1, arg, 0, "b")
}

public collect(arg[], id){
    new maxplayers = get_maxplayers()
    new admins_online_count = get_admins_online_count(maxplayers)
    new admins_total_count = admins_num()
    new players_online_count = get_online(maxplayers)
    new players_total_count = get_statsnum()

    metric_gauge("amxx_players_online_count", players_online_count)
    metric_gauge("amxx_players_total_count", players_total_count)
    metric_gauge("amxx_admins_online_count", admins_online_count)
    metric_gauge("amxx_admins_total_count", admins_total_count)
}

До того как я решил разделить библиотеку и функционал - все работало отлично. Но после...

Вот этот метод который делает server_print("KEY: %s", s) начал выводить полную дичь...
Код:
KEY: etric_host
KEY: etric_port
KEY: ics
KEY: timing
KEY: etric_host
KEY: etric_port
KEY: ics
KEY: timing
KEY: etric_host
KEY: etric_port
KEY: ics
KEY: timing
KEY: etric_host
KEY: etric_port
KEY: ics
KEY: timing
KEY: etric_host
KEY: etric_port
KEY: ics
KEY: timing
Это куски строк и названий методов из кода библиотеки(плагина А)


Компилируется без проблем.
 
Сообщения
212
Реакции
334
Помог
3 раз(а)
Для получения массивов/строк из обработчика нативов старого вида нужно использовать param_convert. Но лучше использовать новый вид, где все аргументы получаются через get_* нативы
 
Сообщения
2
Реакции
0
Да, такой подставы я не ожидал. Спасибо!

Тему можно закрывать
 
Статус
В этой теме нельзя размещать новые ответы.

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу