Free author mem
This commit is contained in:
parent
609c2ed8ac
commit
8a6a0ba3ee
20
db.c
20
db.c
@ -77,6 +77,13 @@ db_book_unfill(Book *p)
|
|||||||
db_series_unfill(&p->s);
|
db_series_unfill(&p->s);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
db_author_unfill(Author *p) {
|
||||||
|
if (NULL == p)
|
||||||
|
return;
|
||||||
|
free(p->name);
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
db_book_free(Book *p)
|
db_book_free(Book *p)
|
||||||
{
|
{
|
||||||
@ -88,7 +95,9 @@ void
|
|||||||
db_book_adv_free(BookAdv *p)
|
db_book_adv_free(BookAdv *p)
|
||||||
{
|
{
|
||||||
db_book_unfill(&p->b);
|
db_book_unfill(&p->b);
|
||||||
//TODO free authors
|
for (size_t i = 0; i < p->asize; i++) {
|
||||||
|
db_author_unfill(p->a[i]);
|
||||||
|
}
|
||||||
free(p);
|
free(p);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -114,7 +123,9 @@ db_books_load(struct kreq *r, BookAdv **books, int limit)
|
|||||||
}
|
}
|
||||||
struct ksqlstmt *stmt;
|
struct ksqlstmt *stmt;
|
||||||
struct bookauth *p = NULL;
|
struct bookauth *p = NULL;
|
||||||
|
struct bookauth *item = NULL;
|
||||||
int i, count = 0;
|
int i, count = 0;
|
||||||
|
int64_t bid;
|
||||||
|
|
||||||
ksql_stmt_alloc(r->arg, &stmt,
|
ksql_stmt_alloc(r->arg, &stmt,
|
||||||
stmts[STMT_BOOKS],
|
stmts[STMT_BOOKS],
|
||||||
@ -134,11 +145,11 @@ db_books_load(struct kreq *r, BookAdv **books, int limit)
|
|||||||
ksql_bind_int(stmt, 0, limit);
|
ksql_bind_int(stmt, 0, limit);
|
||||||
while (KSQL_ROW == ksql_stmt_step(stmt)) {
|
while (KSQL_ROW == ksql_stmt_step(stmt)) {
|
||||||
// add author to list, link related book and increment asize
|
// add author to list, link related book and increment asize
|
||||||
struct bookauth *item = kcalloc(1, sizeof(struct bookauth));
|
item = kcalloc(1, sizeof(struct bookauth));
|
||||||
item->a = kcalloc(1, sizeof(Author));
|
item->a = kcalloc(1, sizeof(Author));
|
||||||
item->a->id = ksql_stmt_int(stmt, 0);
|
item->a->id = ksql_stmt_int(stmt, 0);
|
||||||
item->a->name = kstrdup(ksql_stmt_str(stmt, 1));
|
item->a->name = kstrdup(ksql_stmt_str(stmt, 1));
|
||||||
int64_t bid = ksql_stmt_int(stmt, 2);
|
bid = ksql_stmt_int(stmt, 2);
|
||||||
for (i = 0; i < count && NULL == item->b; i++) {
|
for (i = 0; i < count && NULL == item->b; i++) {
|
||||||
if (books[i]->b.id == bid) {
|
if (books[i]->b.id == bid) {
|
||||||
item->b = books[i];
|
item->b = books[i];
|
||||||
@ -157,9 +168,10 @@ db_books_load(struct kreq *r, BookAdv **books, int limit)
|
|||||||
}
|
}
|
||||||
p->b->a[p->b->asize] = p->a;// add author
|
p->b->a[p->b->asize] = p->a;// add author
|
||||||
p->b->asize++;
|
p->b->asize++;
|
||||||
|
item = p;
|
||||||
p = p->p;
|
p = p->p;
|
||||||
|
free(item);
|
||||||
}
|
}
|
||||||
// TODO free linked list (not authors)
|
|
||||||
ksql_stmt_free(stmt);
|
ksql_stmt_free(stmt);
|
||||||
|
|
||||||
return count;
|
return count;
|
||||||
|
Loading…
Reference in New Issue
Block a user