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

Commit 6399c74

Browse files
committed
Fix \g filename. Free allocated memory and don't use memory that has
been freed.
1 parent 9d45f22 commit 6399c74

File tree

1 file changed

+12
-5
lines changed

1 file changed

+12
-5
lines changed

src/bin/psql/psql.c

+12-5
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
*
88
*
99
* IDENTIFICATION
10-
* $Header: /cvsroot/pgsql/src/bin/psql/Attic/psql.c,v 1.29 1996/11/14 16:08:03 momjian Exp $
10+
* $Header: /cvsroot/pgsql/src/bin/psql/Attic/psql.c,v 1.30 1996/11/20 22:34:36 momjian Exp $
1111
*
1212
*-------------------------------------------------------------------------
1313
*/
@@ -475,6 +475,7 @@ SendQuery(bool * success_p, PsqlSettings * settings, const char *query,
475475
pclose(fp);
476476
else
477477
fclose(fp);
478+
free(settings->gfname);
478479
settings->gfname = NULL;
479480
break;
480481
} else {
@@ -1011,7 +1012,11 @@ HandleSlashCmds(PsqlSettings * settings,
10111012
if (settings->opt.caption)
10121013
free(settings->opt.caption);
10131014
if (!optarg)
1015+
{
1016+
if (settings->opt.caption)
1017+
free(settings->opt.caption);
10141018
settings->opt.caption = NULL;
1019+
}
10151020
else if (!(settings->opt.caption = strdup(optarg))) {
10161021
perror("malloc");
10171022
exit(1);
@@ -1083,7 +1088,7 @@ HandleSlashCmds(PsqlSettings * settings,
10831088
if (optarg)
10841089
fs = optarg;
10851090
if (settings->opt.fieldSep);
1086-
free(settings->opt.fieldSep);
1091+
free(settings->opt.fieldSep);
10871092
if (!(settings->opt.fieldSep = strdup(fs))) {
10881093
perror("malloc");
10891094
exit(1);
@@ -1093,7 +1098,7 @@ HandleSlashCmds(PsqlSettings * settings,
10931098
break;
10941099
}
10951100
case 'g': /* \g means send query */
1096-
settings->gfname = optarg;
1101+
settings->gfname = strdup(optarg);
10971102
status = 0;
10981103
break;
10991104
case 'h': /* help */
@@ -1151,12 +1156,14 @@ HandleSlashCmds(PsqlSettings * settings,
11511156
if (toggle(settings, &settings->opt.standard, "standard SQL separaters and padding")) {
11521157
settings->opt.html3 = settings->opt.expanded = 0;
11531158
settings->opt.align = settings->opt.header = 1;
1154-
free(settings->opt.fieldSep);
1159+
if (settings->opt.fieldSep)
1160+
free(settings->opt.fieldSep);
11551161
settings->opt.fieldSep = strdup("|");
11561162
if (!settings->quiet)
11571163
fprintf(stderr, "field separater changed to '%s'\n", settings->opt.fieldSep);
11581164
} else {
1159-
free(settings->opt.fieldSep);
1165+
if (settings->opt.fieldSep)
1166+
free(settings->opt.fieldSep);
11601167
settings->opt.fieldSep = strdup(DEFAULT_FIELD_SEP);
11611168
if (!settings->quiet)
11621169
fprintf(stderr, "field separater changed to '%s'\n", settings->opt.fieldSep);

0 commit comments

Comments
 (0)