NULL checks of deferenced pointers in picksplit method of intarray

From: Michael Paquier <michael(dot)paquier(at)gmail(dot)com>
To: PostgreSQL mailing lists <pgsql-hackers(at)postgresql(dot)org>
Subject: NULL checks of deferenced pointers in picksplit method of intarray
Date: 2015-01-30 12:06:45
Message-ID: CAB7nPqRr+kWGutuFR+OLhZir=81h8MAPoTjw7ijktTNwCi4Q9Q@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Hi all,

Coverity is pointing out that _int_split.c has unnecessary checks for
deferenced pointers in 5 places.

- if (inter_d != (ArrayType *) NULL)
- pfree(inter_d);
+ pfree(inter_d);
In this case inter_d is generated by inner_int_inter, a routine that
always generates an ArrayType with at least new_intArrayType.

In two places there is as well this pattern:
- if (datum_l)
- pfree(datum_l);
- if (union_dr)
- pfree(union_dr);
+ pfree(datum_l);
+ pfree(union_dr);
And that one:
- if (datum_r)
- pfree(datum_r);
- if (union_dl)
- pfree(union_dl);
+ pfree(datum_r);
+ pfree(union_dl);
union_dr and union_dl are generated by inner_int_union which never
returns NULL. Similarly, datum_r and datum_l are created with
copy_intArrayType the first time, which never returns NULL, and their
values are changed at each loop step. Also, as far as I understood
from this code, no elements manipulated are NULL, perhaps this is
worth an assertion?

Attached is a patch to adjust those things.
Regards,
--
Michael

Attachment Content-Type Size
20150130_intarray_fix_dereferences.patch text/x-diff 1.1 KB

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Sawada Masahiko 2015-01-30 12:38:10 Re: Proposal: knowing detail of config files via SQL
Previous Message David Rowley 2015-01-30 11:37:19 Re: Performance improvement for joins where outer side is unique