Changeset: ac14e3e26f88 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=ac14e3e26f88 Modified Files: sql/server/sql_qc.c Branch: Oct2020 Log Message:
Protect against null pointers diffs (104 lines): diff --git a/sql/server/sql_qc.c b/sql/server/sql_qc.c --- a/sql/server/sql_qc.c +++ b/sql/server/sql_qc.c @@ -42,16 +42,18 @@ qc_delete(qc *cache, cq *q) { cq *n, *p = NULL; - for (n = cache->q; n; p = n, n = n->next) { - if (n == q) { - if (p) { - p->next = q->next; - } else { - cache->q = q->next; + if (cache) { + for (n = cache->q; n; p = n, n = n->next) { + if (n == q) { + if (p) { + p->next = q->next; + } else { + cache->q = q->next; + } + cq_delete(cache->clientid, q); + cache->nr--; + break; } - cq_delete(cache->clientid, q); - cache->nr--; - break; } } } @@ -61,24 +63,29 @@ qc_clean(qc *cache) { cq *n, *p = NULL; - for (n = cache->q; n; ) { - p = n->next; - cq_delete(cache->clientid, n); - cache->nr--; - n = p; + if (cache) { + for (n = cache->q; n; ) { + p = n->next; + cq_delete(cache->clientid, n); + cache->nr--; + n = p; + } + cache->q = NULL; } - cache->q = NULL; } void qc_destroy(qc *cache) { cq *q, *n; - for (q = cache->q; q; q = n) { - n = q->next; - cq_delete(cache->clientid, q); - cache->nr--; + if (cache) { + for (q = cache->q; q; q = n) { + n = q->next; + + cq_delete(cache->clientid, q); + cache->nr--; + } } } @@ -87,10 +94,12 @@ qc_find(qc *cache, int id) { cq *q; - for (q = cache->q; q; q = q->next) { - if (q->id == id) { - q->count++; - return q; + if (cache) { + for (q = cache->q; q; q = q->next) { + if (q->id == id) { + q->count++; + return q; + } } } return NULL; @@ -104,7 +113,7 @@ qc_insert(qc *cache, sql_allocator *sa, cq *n = SA_ZNEW(sa, cq); list *res = NULL; - if (!n || !f) + if (!n || !f || !cache) return NULL; n->id = cache->id++; cache->nr++; @@ -158,5 +167,5 @@ qc_insert(qc *cache, sql_allocator *sa, int qc_size(qc *cache) { - return cache->nr; + return cache ? cache->nr : 0; } _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list