unicorn-engine / unicorn

Unicorn CPU emulator framework (ARM, AArch64, M68K, Mips, Sparc, PowerPC, RiscV, S390x, TriCore, X86)
http://www.unicorn-engine.org
GNU General Public License v2.0
7.33k stars 1.31k forks source link

bindings: ruby: fix unexpected uc_query result pointer type #1962

Open anthraxx opened 4 weeks ago

anthraxx commented 4 weeks ago

uc_query expects a size_t , while we are passing uc_arch . This has been working for a while as gcc just warned about this, however with latest gcc this changed into an error:

unicorn.c:122:34: error: passing argument 3 of ‘uc_query’ from incompatible pointer type [-Wincompatible-pointer-types] 206 | uc_query(_uc, UC_QUERY_ARCH, &arch); unicorn.h:689:60: note: expected ‘size_t ’ {aka ‘long unsigned int ’} but argument is of type ‘uc_arch ’ 689 | uc_err uc_query(uc_engine uc, uc_query_type type, size_t *result);

Fix this issue by querying the result into a size_t and later downcast the result into an uc_arch enum.