]> git.lizzy.rs Git - nothing.git/commitdiff
Fix lt.h
authorrexim <reximkut@gmail.com>
Sun, 12 May 2019 17:42:01 +0000 (00:42 +0700)
committerrexim <reximkut@gmail.com>
Sun, 12 May 2019 17:42:01 +0000 (00:42 +0700)
src/system/lt.h

index 4586d4103b2ad8e9161ed79a0b6e7406029a2e3e..77b02e5a02810e048402046e3facca2ea2673935 100644 (file)
@@ -33,7 +33,7 @@ static inline void destroy_lt(Lt lt)
 #define PUSH_LT(lt, res, dtor)                  \
     lt_push(&lt, (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) {
@@ -55,12 +55,16 @@ static inline void *lt_push(Lt lt, void *res, Dtor dtor)
 #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(&lt, (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);
 
@@ -78,7 +82,7 @@ static inline void *lt_reset(Lt lt, void *old_res, void *new_res)
 #define REPLACE_LT(lt, old_res, new_res)        \
     lt_replace(&lt, (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) {
@@ -93,7 +97,7 @@ static inline void *lt_replace(Lt lt, void *old_res, void *new_res)
 #define RELEASE_LT(lt, res)                     \
     lt_release(&lt, (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) {