mirror of
https://github.com/capstone-engine/capstone.git
synced 2024-11-23 21:49:46 +00:00
49 lines
1.4 KiB
Plaintext
49 lines
1.4 KiB
Plaintext
1. API change
|
|
|
|
Version 2.1 changes the API cs_close() from (prototype):
|
|
|
|
cs_err cs_close(csh handle);
|
|
|
|
to:
|
|
|
|
cs_err cs_close(csh *handle);
|
|
|
|
|
|
Therefore, all C code written on top of Capstone must be fixed accordingly,
|
|
from something like:
|
|
|
|
|
|
csh handle;
|
|
//....
|
|
cs_close(handle); // <-- cs_close() used to take handle as argument.
|
|
|
|
to:
|
|
|
|
csh handle;
|
|
//....
|
|
cs_close(&handle); // <-- cs_close() now takes pointer to handle as argument.
|
|
|
|
|
|
Internally, this change is to invalidate @handle, making sure it cannot be
|
|
mistakenly used after the handle is closed.
|
|
|
|
|
|
NOTE: this change is on C interface only. All the bindings Python, Java or
|
|
bindings made by community such as C#, Go, Ruby & Vala should hide this change
|
|
behind their API. For this reason, code using these bindings still work exactly
|
|
like before and do not need to have any modification.
|
|
|
|
|
|
2. Upgrade bindings
|
|
|
|
Version 2.1 makes some changes to Java & Python bindings, like adding some new
|
|
instructions (affecting *_const.py & *_const.java). While this does not break
|
|
API compatibility (i.e users do not need to modify their program written with
|
|
prior version 2.0), they must upgrade these bindings and must not use the old
|
|
bindings from prior versions.
|
|
|
|
We cannot emphasize this enough: When upgrading to the new engine, always
|
|
upgrade to the bindings coming with the same core. If do not follow this
|
|
principle, applications can silently break without any clear evidence,
|
|
making it very hard to debug sometimes.
|