#define PUSH_LT(lt, res, dtor) \
lt_push(<, (void*)res, (Dtor)dtor)
-static inline void *lt_push(Lt lt, void *res, Dtor dtor)
+static inline void *lt_push(Lt *lt, void *res, Dtor dtor)
{
if (lt->size >= lt->capacity) {
if (lt->capacity == 0) {
#define RETURN_LT(lt, result) \
return (destroy_lt(lt), result)
-#define RETURN_LT0(lt) (destroy_lt(lt), return)
+#define RETURN_LT0(lt) \
+ do { \
+ destroy_lt(lt); \
+ return; \
+ } while (0)
#define RESET_LT(lt, old_res, new_res) \
lt_reset(<, (void*) old_res, (void*) new_res)
-static inline void *lt_reset(Lt lt, void *old_res, void *new_res)
+static inline void *lt_reset(Lt *lt, void *old_res, void *new_res)
{
assert(old_res != new_res);
#define REPLACE_LT(lt, old_res, new_res) \
lt_replace(<, (void *)old_res, (void*)new_res)
-static inline void *lt_replace(Lt lt, void *old_res, void *new_res)
+static inline void *lt_replace(Lt *lt, void *old_res, void *new_res)
{
for (size_t i = 0; i < lt->size; ++i) {
if (lt->slots[i].res == old_res) {
#define RELEASE_LT(lt, res) \
lt_release(<, (void*)res)
-static inline void *lt_release(Lt lt, void *res)
+static inline void *lt_release(Lt *lt, void *res)
{
for (size_t i = 0; i < lt->size; ++i) {
if (lt->slots[i].res == res) {