Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitfc96c69

Browse files
committed
Initialize unused ExprEvalStep fields.
ExecPushExprSlots didn't initialize ExprEvalStep's resvalue/resnullsteps as it didn't use them. That caused wrong valgrind warnings foran upcoming patch, so zero-intialize.Also zero-initialize all scratch ExprEvalStep's allocated on thestack, to avoid issues with similar future omissions of non-critialdata.
1 parent1e1e599 commitfc96c69

File tree

1 file changed

+11
-8
lines changed

1 file changed

+11
-8
lines changed

‎src/backend/executor/execExpr.c

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ ExprState *
118118
ExecInitExpr(Expr*node,PlanState*parent)
119119
{
120120
ExprState*state;
121-
ExprEvalStepscratch;
121+
ExprEvalStepscratch= {0};
122122

123123
/* Special case: NULL expression produces a NULL ExprState pointer */
124124
if (node==NULL)
@@ -155,7 +155,7 @@ ExprState *
155155
ExecInitExprWithParams(Expr*node,ParamListInfoext_params)
156156
{
157157
ExprState*state;
158-
ExprEvalStepscratch;
158+
ExprEvalStepscratch= {0};
159159

160160
/* Special case: NULL expression produces a NULL ExprState pointer */
161161
if (node==NULL)
@@ -204,7 +204,7 @@ ExprState *
204204
ExecInitQual(List*qual,PlanState*parent)
205205
{
206206
ExprState*state;
207-
ExprEvalStepscratch;
207+
ExprEvalStepscratch= {0};
208208
List*adjust_jumps=NIL;
209209
ListCell*lc;
210210

@@ -353,7 +353,7 @@ ExecBuildProjectionInfo(List *targetList,
353353
{
354354
ProjectionInfo*projInfo=makeNode(ProjectionInfo);
355355
ExprState*state;
356-
ExprEvalStepscratch;
356+
ExprEvalStepscratch= {0};
357357
ListCell*lc;
358358

359359
projInfo->pi_exprContext=econtext;
@@ -638,7 +638,7 @@ static void
638638
ExecInitExprRec(Expr*node,ExprState*state,
639639
Datum*resv,bool*resnull)
640640
{
641-
ExprEvalStepscratch;
641+
ExprEvalStepscratch= {0};
642642

643643
/* Guard against stack overflow due to overly complex expressions */
644644
check_stack_depth();
@@ -2273,7 +2273,10 @@ ExecInitExprSlots(ExprState *state, Node *node)
22732273
staticvoid
22742274
ExecPushExprSlots(ExprState*state,LastAttnumInfo*info)
22752275
{
2276-
ExprEvalStepscratch;
2276+
ExprEvalStepscratch= {0};
2277+
2278+
scratch.resvalue=NULL;
2279+
scratch.resnull=NULL;
22772280

22782281
/* Emit steps as needed */
22792282
if (info->last_inner>0)
@@ -2659,7 +2662,7 @@ static void
26592662
ExecInitCoerceToDomain(ExprEvalStep*scratch,CoerceToDomain*ctest,
26602663
ExprState*state,Datum*resv,bool*resnull)
26612664
{
2662-
ExprEvalStepscratch2;
2665+
ExprEvalStepscratch2= {0};
26632666
DomainConstraintRef*constraint_ref;
26642667
Datum*domainval=NULL;
26652668
bool*domainnull=NULL;
@@ -2811,7 +2814,7 @@ ExecBuildAggTrans(AggState *aggstate, AggStatePerPhase phase,
28112814
{
28122815
ExprState*state=makeNode(ExprState);
28132816
PlanState*parent=&aggstate->ss.ps;
2814-
ExprEvalStepscratch;
2817+
ExprEvalStepscratch= {0};
28152818
inttransno=0;
28162819
intsetoff=0;
28172820
boolisCombine=DO_AGGSPLIT_COMBINE(aggstate->aggsplit);

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp