]> granicus.if.org Git - postgresql/commitdiff
Un-break custom_variable_classes kluge ... mea culpa.
authorTom Lane <tgl@sss.pgh.pa.us>
Thu, 11 Nov 2004 23:45:13 +0000 (23:45 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Thu, 11 Nov 2004 23:45:13 +0000 (23:45 +0000)
src/backend/utils/misc/guc-file.l

index 913dead8303cd0c42226309a500cf526cb42e38e..be36166743a3a87f567e6f85889de244c3803e71 100644 (file)
@@ -4,7 +4,7 @@
  *
  * Copyright (c) 2000-2004, PostgreSQL Global Development Group
  *
- * $PostgreSQL: pgsql/src/backend/utils/misc/guc-file.l,v 1.26 2004/10/08 01:36:35 tgl Exp $
+ * $PostgreSQL: pgsql/src/backend/utils/misc/guc-file.l,v 1.27 2004/11/11 23:45:13 tgl Exp $
  */
 
 %{
@@ -203,25 +203,28 @@ ProcessConfigFile(GucContext context)
                                if (token != GUC_EOL)
                                        goto parse_error;
 
-                               item = palloc(sizeof *item);
-                               item->name = opt_name;
-                               item->value = opt_value;
-
                                if (strcmp(opt_name, "custom_variable_classes") == 0)
                                {
                                        /*
                                         * This variable must be processed first as it controls
-                                        * the validity of other variables; so prepend to
-                                        * the list instead of appending.
+                                        * the validity of other variables; so apply immediately.
                                         */
-                                       item->next = head;
-                                       head = item;
-                                       if (!tail)
-                                               tail = item;
+                                       if (!set_config_option(opt_name, opt_value, context,
+                                                                                  PGC_S_FILE, false, true))
+                                       {
+                                               pfree(opt_name);
+                                               pfree(opt_value);
+                                               goto cleanup_exit;
+                                       }
+                                       pfree(opt_name);
+                                       pfree(opt_value);
                                }
                                else
                                {
                                        /* append to list */
+                                       item = palloc(sizeof *item);
+                                       item->name = opt_name;
+                                       item->value = opt_value;
                                        item->next = NULL;
                                        if (!head)
                                                head = item;