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
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list