Mark init, fini, and decode arch callbacks as const ##arch

This commit is contained in:
Luc Tielen 2023-06-22 18:14:25 +02:00 committed by pancake
parent d11b0ec51c
commit 64e2b0efd5
2 changed files with 8 additions and 7 deletions

View File

@ -171,13 +171,12 @@ typedef struct r_arch_plugin_t {
RSysBits bits;
RSysBits addr_bits;
// R2_590 figure out a way to make init and decode const (better perf)
RArchPluginInitCallback init;
RArchPluginFiniCallback fini;
const RArchPluginInitCallback init;
const RArchPluginFiniCallback fini;
const RArchPluginInfoCallback info;
const RArchPluginRegistersCallback regs;
const RArchPluginEncodeCallback encode;
RArchPluginDecodeCallback decode;
const RArchPluginDecodeCallback decode;
const RArchPluginModifyCallback patch;
const RArchPluginMnemonicsCallback mnemonics;
const RArchPluginPreludesCallback preludes;

View File

@ -189,9 +189,11 @@ static JSValue r2plugin_arch(JSContext *ctx, JSValueConst this_val, int argc, JS
ap->meta.author = qjs_get_string (ctx, res, "author");
ap->meta.license = qjs_get_string (ctx, res, "license");
ap->meta.version = qjs_get_string (ctx, res, "version");
ap->decode = r2qjs_arch_decode;
ap->init = r2qjs_arch_init;
ap->fini = r2qjs_arch_fini;
// removing const is valid here, because malloc itself doesn't return const qualified object
*((RArchPluginDecodeCallback*)&ap->decode) = r2qjs_arch_decode;
*((RArchPluginFiniCallback*)&ap->init) = r2qjs_arch_init;
*((RArchPluginFiniCallback*)&ap->fini) = r2qjs_arch_fini;
// TODO remove duplicate plugin check?
QjsArchPlugin *plugin = plugin_manager_find_arch_plugin (pm, ap->arch);