diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2000-09-22 15:34:31 +0000 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2000-09-22 15:34:31 +0000 |
commit | 920c5062d21e92ad165f152810436fa272cc8513 (patch) | |
tree | d91743cb266f1c106c638ffdcbeb0aeb45a237a9 /src/backend/commands/variable.c | |
parent | d35437069a691f6ac2298d43ed70a1e83d340b0e (diff) | |
download | postgresql-920c5062d21e92ad165f152810436fa272cc8513.tar.gz postgresql-920c5062d21e92ad165f152810436fa272cc8513.zip |
SetPGVariable() crashed on SET DateStyle TO DEFAULT and related cases.
Diffstat (limited to 'src/backend/commands/variable.c')
-rw-r--r-- | src/backend/commands/variable.c | 21 |
1 files changed, 13 insertions, 8 deletions
diff --git a/src/backend/commands/variable.c b/src/backend/commands/variable.c index a70dfcad9bb..96a2c126deb 100644 --- a/src/backend/commands/variable.c +++ b/src/backend/commands/variable.c @@ -9,7 +9,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/commands/variable.c,v 1.40 2000/08/01 18:29:29 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/commands/variable.c,v 1.41 2000/09/22 15:34:31 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -592,28 +592,33 @@ reset_random_seed(void) void SetPGVariable(const char *name, const char *value) { + char *mvalue = value ? pstrdup(value) : ((char*) NULL); + /* * Special cases ought to be removed and handled separately * by TCOP */ if (strcasecmp(name, "datestyle")==0) - parse_date(pstrdup(value)); + parse_date(mvalue); else if (strcasecmp(name, "timezone")==0) - parse_timezone(pstrdup(value)); + parse_timezone(mvalue); else if (strcasecmp(name, "DefaultXactIsoLevel")==0) - parse_DefaultXactIsoLevel(pstrdup(value)); + parse_DefaultXactIsoLevel(mvalue); else if (strcasecmp(name, "XactIsoLevel")==0) - parse_XactIsoLevel(pstrdup(value)); + parse_XactIsoLevel(mvalue); #ifdef MULTIBYTE else if (strcasecmp(name, "client_encoding")==0) - parse_client_encoding(pstrdup(value)); + parse_client_encoding(mvalue); else if (strcasecmp(name, "server_encoding")==0) - parse_server_encoding(pstrdup(value)); + parse_server_encoding(mvalue); #endif else if (strcasecmp(name, "random_seed")==0) - parse_random_seed(pstrdup(value)); + parse_random_seed(mvalue); else SetConfigOption(name, value, superuser() ? PGC_SUSET : PGC_USERSET); + + if (mvalue) + pfree(mvalue); } |