From: Tom Lane Date: Tue, 28 Jan 2003 18:04:13 +0000 (+0000) Subject: Convert variable name to canonical spelling before checking for matches X-Git-Url: http://git.postgresql.org/gitweb/static/gitweb.js?a=commitdiff_plain;h=bfeda31d6640cc405f7a8c1f6b3c4f92781c4825;p=users%2Fbernd%2Fpostgres.git Convert variable name to canonical spelling before checking for matches in GUCArrayAdd/GUCArrayDelete. This prevents the multiple-entry bug exhibited by Frank Lupo 28-Jan-2003. --- diff --git a/src/backend/utils/misc/guc.c b/src/backend/utils/misc/guc.c index efa9dae0d2..ce7b44d52b 100644 --- a/src/backend/utils/misc/guc.c +++ b/src/backend/utils/misc/guc.c @@ -2802,6 +2802,7 @@ ProcessGUCArray(ArrayType *array, GucSource source) ArrayType * GUCArrayAdd(ArrayType *array, const char *name, const char *value) { + const char *varname; Datum datum; char *newval; ArrayType *a; @@ -2814,6 +2815,10 @@ GUCArrayAdd(ArrayType *array, const char *name, const char *value) superuser() ? PGC_SUSET : PGC_USERSET, PGC_S_SESSION, false, false); + /* convert name to canonical spelling, so we can use plain strcmp */ + (void) GetConfigOptionByName(name, &varname); + name = varname; + newval = palloc(strlen(name) + 1 + strlen(value) + 1); sprintf(newval, "%s=%s", name, value); datum = DirectFunctionCall1(textin, CStringGetDatum(newval)); @@ -2877,6 +2882,7 @@ GUCArrayAdd(ArrayType *array, const char *name, const char *value) ArrayType * GUCArrayDelete(ArrayType *array, const char *name) { + const char *varname; ArrayType *newarray; int i; int index; @@ -2888,6 +2894,10 @@ GUCArrayDelete(ArrayType *array, const char *name) superuser() ? PGC_SUSET : PGC_USERSET, PGC_S_SESSION, false, false); + /* convert name to canonical spelling, so we can use plain strcmp */ + (void) GetConfigOptionByName(name, &varname); + name = varname; + /* if array is currently null, then surely nothing to delete */ if (!array) return NULL;