]> granicus.if.org Git - postgresql/commitdiff
SetPGVariable() crashed on SET DateStyle TO DEFAULT and related cases.
authorTom Lane <tgl@sss.pgh.pa.us>
Fri, 22 Sep 2000 15:34:31 +0000 (15:34 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Fri, 22 Sep 2000 15:34:31 +0000 (15:34 +0000)
src/backend/commands/variable.c

index a70dfcad9bb48e5027b911ad4221cd3e81476bc5..96a2c126deb4165f2d9429f698422d0ce92579e9 100644 (file)
@@ -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);
 }