diff --git a/src/plugins/e-acsl/share/e-acsl/bittree_model/e_acsl_bittree_mmodel.c b/src/plugins/e-acsl/share/e-acsl/bittree_model/e_acsl_bittree_mmodel.c index d9b0c65b197f5ed9406d7d82a3f1d82c38d20bae..b175532a53dc0a2bbacbbfdb280b3393c96870e5 100644 --- a/src/plugins/e-acsl/share/e-acsl/bittree_model/e_acsl_bittree_mmodel.c +++ b/src/plugins/e-acsl/share/e-acsl/bittree_model/e_acsl_bittree_mmodel.c @@ -28,6 +28,23 @@ #include "e_acsl_bittree.h" +/* Assertions in debug mode */ +#define ALLOCATED(_ptr,_size) \ + ((allocated(_ptr, _size, _ptr) == NULL) ? 0 : 1) + +#ifdef E_ACSL_DEBUG +#define DVALIDATE_RO_ACCESS(_ptr, _size) \ + vassert(ALLOCATED(_ptr, _size), \ + "Not allocated [%a, %a + %lu]", (uintptr_t)_ptr, _size) +#define DVALIDATE_RW_ACCESS(_ptr, _size) { \ + DVALIDATE_RO_ACCESS(_ptr, _size); \ + vassert(!readonly(_ptr), "Location %a is read-only", (uintptr_t)_ptr); \ +} +#else +#define DVALIDATE_RO_ACCESS(_ptr, _size) +#define DVALIDATE_RW_ACCESS(_ptr, _size) +#endif + /**************************/ /* SUPPORT {{{ */ /**************************/