projects
/
m6w6
/
ext-psi
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
|
github
raw
|
inline
| side by side
fix warning
[m6w6/ext-psi]
/
src
/
plist.c
diff --git
a/src/plist.c
b/src/plist.c
index 2cf4eb3674e509378eba5312ff7d7cf2b46851d7..38cde5b435c3d1b7e6d16ff844ca4b180c735482 100644
(file)
--- a/
src/plist.c
+++ b/
src/plist.c
@@
-44,10
+44,10
@@
struct psi_plist {
} while (0)
/* !!! adjust list->count prior reduction */
#define PLIST_MOV_REDUCE(l, i) PLIST_MOV_REDUCE_EX(l, i, 1)
} while (0)
/* !!! adjust list->count prior reduction */
#define PLIST_MOV_REDUCE(l, i) PLIST_MOV_REDUCE_EX(l, i, 1)
-#define PLIST_MOV_REDUCE_EX(l, i, n) memmove(PLIST_ELE(l, i), PLIST_ELE(l,
i + n), (l)->size * ((l)->count - i
))
+#define PLIST_MOV_REDUCE_EX(l, i, n) memmove(PLIST_ELE(l, i), PLIST_ELE(l,
(i) + (n)), (l)->size * ((l)->count - (i)
))
/* !!! adjust list->count after expansion */
#define PLIST_MOV_EXPAND(l, i) PLIST_MOV_EXPAND_EX(l, i, 1)
/* !!! adjust list->count after expansion */
#define PLIST_MOV_EXPAND(l, i) PLIST_MOV_EXPAND_EX(l, i, 1)
-#define PLIST_MOV_EXPAND_EX(l, i, n) memmove(PLIST_ELE(l,
i + n), PLIST_ELE(l, i), (l)->size * ((l)->count - i
))
+#define PLIST_MOV_EXPAND_EX(l, i, n) memmove(PLIST_ELE(l,
(i) + (n)), PLIST_ELE(l, i), (l)->size * ((l)->count - (i)
))
struct psi_plist *psi_plist_init(void (*dtor)(void *)) {
return psi_plist_init_ex(0, dtor);
struct psi_plist *psi_plist_init(void (*dtor)(void *)) {
return psi_plist_init_ex(0, dtor);
@@
-69,15
+69,19
@@
struct psi_plist *psi_plist_init_ex(size_t size, void (*dtor)(void *)) {
void psi_plist_clean(struct psi_plist *list) {
size_t i;
void psi_plist_clean(struct psi_plist *list) {
size_t i;
- if (list->dtor) for (i = 0; i < list->count; ++i) {
- list->dtor(PLIST_ELE(list, i));
+ if (list) {
+ if (list->dtor) for (i = 0; i < list->count; ++i) {
+ list->dtor(PLIST_ELE(list, i));
+ }
+ list->count = 0;
}
}
- list->count = 0;
}
void psi_plist_free(struct psi_plist *list) {
}
void psi_plist_free(struct psi_plist *list) {
- psi_plist_clean(list);
- free(list);
+ if (list) {
+ psi_plist_clean(list);
+ free(list);
+ }
}
struct psi_plist *psi_plist_copy(struct psi_plist *list, void (*ctor)(void *))
}
struct psi_plist *psi_plist_copy(struct psi_plist *list, void (*ctor)(void *))
@@
-117,7
+121,7
@@
struct psi_plist *psi_plist_add(struct psi_plist *list, void *ptr) {
}
struct psi_plist *psi_plist_add_r(struct psi_plist *list, size_t num_eles, void **eles) {
}
struct psi_plist *psi_plist_add_r(struct psi_plist *list, size_t num_eles, void **eles) {
- if (list
&& list->count
) {
+ if (list) {
list = realloc(list, sizeof(*list) + list->size + (num_eles + list->count) * list->size);
}
if (list) {
list = realloc(list, sizeof(*list) + list->size + (num_eles + list->count) * list->size);
}
if (list) {
@@
-192,7
+196,7
@@
struct psi_plist *psi_plist_ins_r(struct psi_plist *list, size_t offset_start, s
size_t new_count;
if (list) {
size_t new_count;
if (list) {
- new_count = MAX(offset_start
+ 1
, list->count) + num_eles;
+ new_count = MAX(offset_start, list->count) + num_eles;
if (new_count) {
list = realloc(list, sizeof(*list) + list->size + new_count * list->size);
}
if (new_count) {
list = realloc(list, sizeof(*list) + list->size + new_count * list->size);
}