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

Commitf712289

Browse files
committed
Plug some trivial memory leaks in pg_dump and pg_upgrade.
There's no point in trying to free every small allocation in theseprograms that are used in a one-shot fashion, but these ones seems likean improvement on readability grounds.Michael Paquier, per Coverity report.
1 parent1fd0d5e commitf712289

File tree

3 files changed

+29
-12
lines changed

3 files changed

+29
-12
lines changed

‎src/bin/pg_dump/pg_dump.c

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -10593,6 +10593,8 @@ dumpCast(Archive *fout, DumpOptions *dopt, CastInfo *cast)
1059310593
PQExpBufferdelqry;
1059410594
PQExpBufferlabelq;
1059510595
FuncInfo*funcInfo=NULL;
10596+
char*sourceType;
10597+
char*targetType;
1059610598

1059710599
/* Skip if not to be dumped */
1059810600
if (!cast->dobj.dump||dopt->dataOnly)
@@ -10616,13 +10618,13 @@ dumpCast(Archive *fout, DumpOptions *dopt, CastInfo *cast)
1061610618
delqry=createPQExpBuffer();
1061710619
labelq=createPQExpBuffer();
1061810620

10621+
sourceType=getFormattedTypeName(fout,cast->castsource,zeroAsNone);
10622+
targetType=getFormattedTypeName(fout,cast->casttarget,zeroAsNone);
1061910623
appendPQExpBuffer(delqry,"DROP CAST (%s AS %s);\n",
10620-
getFormattedTypeName(fout,cast->castsource,zeroAsNone),
10621-
getFormattedTypeName(fout,cast->casttarget,zeroAsNone));
10624+
sourceType,targetType);
1062210625

1062310626
appendPQExpBuffer(defqry,"CREATE CAST (%s AS %s) ",
10624-
getFormattedTypeName(fout,cast->castsource,zeroAsNone),
10625-
getFormattedTypeName(fout,cast->casttarget,zeroAsNone));
10627+
sourceType,targetType);
1062610628

1062710629
switch (cast->castmethod)
1062810630
{
@@ -10660,8 +10662,7 @@ dumpCast(Archive *fout, DumpOptions *dopt, CastInfo *cast)
1066010662
appendPQExpBufferStr(defqry,";\n");
1066110663

1066210664
appendPQExpBuffer(labelq,"CAST (%s AS %s)",
10663-
getFormattedTypeName(fout,cast->castsource,zeroAsNone),
10664-
getFormattedTypeName(fout,cast->casttarget,zeroAsNone));
10665+
sourceType,targetType);
1066510666

1066610667
if (dopt->binary_upgrade)
1066710668
binary_upgrade_extension_member(defqry,&cast->dobj,labelq->data);
@@ -10679,6 +10680,9 @@ dumpCast(Archive *fout, DumpOptions *dopt, CastInfo *cast)
1067910680
NULL,"",
1068010681
cast->dobj.catId,0,cast->dobj.dumpId);
1068110682

10683+
free(sourceType);
10684+
free(targetType);
10685+
1068210686
destroyPQExpBuffer(defqry);
1068310687
destroyPQExpBuffer(delqry);
1068410688
destroyPQExpBuffer(labelq);
@@ -10696,6 +10700,7 @@ dumpTransform(Archive *fout, DumpOptions *dopt, TransformInfo *transform)
1069610700
FuncInfo*fromsqlFuncInfo=NULL;
1069710701
FuncInfo*tosqlFuncInfo=NULL;
1069810702
char*lanname;
10703+
char*transformType;
1069910704

1070010705
/* Skip if not to be dumped */
1070110706
if (!transform->dobj.dump||dopt->dataOnly)
@@ -10723,14 +10728,13 @@ dumpTransform(Archive *fout, DumpOptions *dopt, TransformInfo *transform)
1072310728
labelq=createPQExpBuffer();
1072410729

1072510730
lanname=get_language_name(fout,transform->trflang);
10731+
transformType=getFormattedTypeName(fout,transform->trftype,zeroAsNone);
1072610732

1072710733
appendPQExpBuffer(delqry,"DROP TRANSFORM FOR %s LANGUAGE %s;\n",
10728-
getFormattedTypeName(fout,transform->trftype,zeroAsNone),
10729-
lanname);
10734+
transformType,lanname);
1073010735

1073110736
appendPQExpBuffer(defqry,"CREATE TRANSFORM FOR %s LANGUAGE %s (",
10732-
getFormattedTypeName(fout,transform->trftype,zeroAsNone),
10733-
lanname);
10737+
transformType,lanname);
1073410738

1073510739
if (!transform->trffromsql&& !transform->trftosql)
1073610740
write_msg(NULL,"WARNING: bogus transform definition, at least one of trffromsql and trftosql should be nonzero\n");
@@ -10777,8 +10781,7 @@ dumpTransform(Archive *fout, DumpOptions *dopt, TransformInfo *transform)
1077710781
appendPQExpBuffer(defqry,");\n");
1077810782

1077910783
appendPQExpBuffer(labelq,"TRANSFORM FOR %s LANGUAGE %s",
10780-
getFormattedTypeName(fout,transform->trftype,zeroAsNone),
10781-
lanname);
10784+
transformType,lanname);
1078210785

1078310786
if (dopt->binary_upgrade)
1078410787
binary_upgrade_extension_member(defqry,&transform->dobj,labelq->data);
@@ -10797,6 +10800,7 @@ dumpTransform(Archive *fout, DumpOptions *dopt, TransformInfo *transform)
1079710800
transform->dobj.catId,0,transform->dobj.dumpId);
1079810801

1079910802
free(lanname);
10803+
free(transformType);
1080010804
destroyPQExpBuffer(defqry);
1080110805
destroyPQExpBuffer(delqry);
1080210806
destroyPQExpBuffer(labelq);

‎src/bin/pg_dump/pg_dumpall.c

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1442,6 +1442,13 @@ dumpCreateDB(PGconn *conn)
14421442
free(fdbname);
14431443
}
14441444

1445+
if (default_encoding)
1446+
free(default_encoding);
1447+
if (default_collate)
1448+
free(default_collate);
1449+
if (default_ctype)
1450+
free(default_ctype);
1451+
14451452
PQclear(res);
14461453
destroyPQExpBuffer(buf);
14471454

‎src/bin/pg_upgrade/check.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -337,8 +337,14 @@ equivalent_locale(int category, const char *loca, const char *locb)
337337
lenb=charb ? (charb-canonb) :strlen(canonb);
338338

339339
if (lena==lenb&&pg_strncasecmp(canona,canonb,lena)==0)
340+
{
341+
pg_free(canona);
342+
pg_free(canonb);
340343
return true;
344+
}
341345

346+
pg_free(canona);
347+
pg_free(canonb);
342348
return false;
343349
}
344350

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp