if (prohibitValueChange)
{
+ /* Release newextra, unless it's reset_extra */
+ if (newextra && !extra_field_used(&conf->gen, newextra))
+ free(newextra);
+
if (*conf->variable != newval)
{
record->status |= GUC_PENDING_RESTART;
if (prohibitValueChange)
{
+ /* Release newextra, unless it's reset_extra */
+ if (newextra && !extra_field_used(&conf->gen, newextra))
+ free(newextra);
+
if (*conf->variable != newval)
{
record->status |= GUC_PENDING_RESTART;
if (prohibitValueChange)
{
+ /* Release newextra, unless it's reset_extra */
+ if (newextra && !extra_field_used(&conf->gen, newextra))
+ free(newextra);
+
if (*conf->variable != newval)
{
record->status |= GUC_PENDING_RESTART;
if (prohibitValueChange)
{
+ bool newval_different;
+
/* newval shouldn't be NULL, so we're a bit sloppy here */
- if (*conf->variable == NULL || newval == NULL ||
- strcmp(*conf->variable, newval) != 0)
+ newval_different = (*conf->variable == NULL ||
+ newval == NULL ||
+ strcmp(*conf->variable, newval) != 0);
+
+ /* Release newval, unless it's reset_val */
+ if (newval && !string_field_used(conf, newval))
+ free(newval);
+ /* Release newextra, unless it's reset_extra */
+ if (newextra && !extra_field_used(&conf->gen, newextra))
+ free(newextra);
+
+ if (newval_different)
{
record->status |= GUC_PENDING_RESTART;
ereport(elevel,
if (prohibitValueChange)
{
+ /* Release newextra, unless it's reset_extra */
+ if (newextra && !extra_field_used(&conf->gen, newextra))
+ free(newextra);
+
if (*conf->variable != newval)
{
record->status |= GUC_PENDING_RESTART;