Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit 5a1d1b9

Browse files
committed
Avoid memcpy() with a NULL source pointer and count == 0
When memcpy() is called on a pointer, the compiler is entitled to assume that the pointer is not null, which can lead to optimizing nearby code in potentially undesirable ways. We still want such optimizations (gcc's -fdelete-null-pointer-checks) in cases where they're valid. Related: commit 13bba02. Backpatch to pg11, where this particular instance appeared. Reported-by: Ranier Vilela <ranier.vf@gmail.com> Reported-by: Zhihong Yu <zyu@yugabyte.com> Discussion: https://postgr.es/m/CAEudQApUndmQkr5fLrCKXQ7+ib44i7S+Kk93pyVThS85PnG3bQ@mail.gmail.com Discussion: https://postgr.es/m/CALNJ-vSdhwSM5f4tnNn1cdLHvXMVe_S+V3nR5GwNrmCPNB2VtQ@mail.gmail.com
1 parent fd3a75d commit 5a1d1b9

File tree

1 file changed

+4
-2
lines changed

1 file changed

+4
-2
lines changed

src/backend/commands/indexcmds.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1140,15 +1140,17 @@ DefineIndex(Oid relationId,
11401140

11411141
if (partitioned)
11421142
{
1143+
PartitionDesc partdesc;
1144+
11431145
/*
11441146
* Unless caller specified to skip this step (via ONLY), process each
11451147
* partition to make sure they all contain a corresponding index.
11461148
*
11471149
* If we're called internally (no stmt->relation), recurse always.
11481150
*/
1149-
if (!stmt->relation || stmt->relation->inh)
1151+
partdesc = RelationGetPartitionDesc(rel);
1152+
if ((!stmt->relation || stmt->relation->inh) && partdesc->nparts > 0)
11501153
{
1151-
PartitionDesc partdesc = RelationGetPartitionDesc(rel);
11521154
int nparts = partdesc->nparts;
11531155
Oid *part_oids = palloc(sizeof(Oid) * nparts);
11541156
bool invalidate_parent = false;

0 commit comments

Comments
 (0)