1
0
mirror of https://github.com/postgres/postgres.git synced 2025-07-27 12:41:57 +03:00

Code + docs review for escaping of option values (commit 11a020eb6).

Avoid memory leak from incorrect choice of how to free a StringInfo
(resetStringInfo doesn't do it).  Now that pg_split_opts doesn't scribble
on the optstr, mark that as "const" for clarity.  Attach the commentary in
protocol.sgml to the right place, and add documentation about the
user-visible effects of this change on postgres' -o option and libpq's
PGOPTIONS option.
This commit is contained in:
Tom Lane
2015-06-29 12:42:52 -04:00
parent 07cb8b02ab
commit cbc8d65639
5 changed files with 29 additions and 19 deletions

View File

@ -418,7 +418,7 @@ InitCommunication(void)
* backslashes, with \\ representing a literal backslash.
*/
void
pg_split_opts(char **argv, int *argcp, char *optstr)
pg_split_opts(char **argv, int *argcp, const char *optstr)
{
StringInfoData s;
@ -438,8 +438,8 @@ pg_split_opts(char **argv, int *argcp, char *optstr)
break;
/*
* Parse a single option + value, stopping at the first space, unless
* it's escaped.
* Parse a single option, stopping at the first space, unless it's
* escaped.
*/
while (*optstr)
{
@ -457,10 +457,11 @@ pg_split_opts(char **argv, int *argcp, char *optstr)
optstr++;
}
/* now store the option */
/* now store the option in the next argv[] position */
argv[(*argcp)++] = pstrdup(s.data);
}
resetStringInfo(&s);
pfree(s.data);
}
/*

View File

@ -408,7 +408,7 @@ extern AuxProcType MyAuxProcType;
*****************************************************************************/
/* in utils/init/postinit.c */
extern void pg_split_opts(char **argv, int *argcp, char *optstr);
extern void pg_split_opts(char **argv, int *argcp, const char *optstr);
extern void InitializeMaxBackends(void);
extern void InitPostgres(const char *in_dbname, Oid dboid, const char *username,
Oid useroid, char *out_dbname);