From 073505919e2788515fd78e537dd567a45240137f Mon Sep 17 00:00:00 2001 From: =?utf8?q?Peter=20=C3=85strand?= Date: Mon, 3 Jan 2005 14:47:42 +0000 Subject: [PATCH] Bugfix for Configuration system: When using alias parameters, the immutable flag in the real parameter instance should be set. git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@81 3789f03b-4d11-0410-bbf8-ca57d06f2519 --- rfb/Configuration.cxx | 18 +++++++++++++----- rfb/Configuration.h | 1 + 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/rfb/Configuration.cxx b/rfb/Configuration.cxx index fc682103..f4b9f957 100644 --- a/rfb/Configuration.cxx +++ b/rfb/Configuration.cxx @@ -1,4 +1,5 @@ /* Copyright (C) 2002-2004 RealVNC Ltd. All Rights Reserved. + * Copyright (C) 2004 Peter Astrand, Cendio AB. All Rights Reserved. * * This is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -68,8 +69,8 @@ bool Configuration::setParam(const char* name, int len, { bool b = current->setParam(val); current->setHasBeenSet(); - if (b && immutable) - current->setImmutable(); + if (b && immutable) + current->setImmutable(); return b; } current = current->_next; @@ -93,8 +94,8 @@ bool Configuration::setParam(const char* config, bool immutable) { if (strcasecmp(current->getName(), config) == 0) { bool b = current->setParam(); current->setHasBeenSet(); - if (b && immutable) - current->setImmutable(); + if (b && immutable) + current->setImmutable(); return b; } current = current->_next; @@ -225,6 +226,13 @@ bool AliasParameter::isBool() const { return param->isBool(); } +void +AliasParameter::setImmutable() { + vlog.debug("set immutable %s (Alias)", getName()); + param->setImmutable(); +} + + // -=- BoolParameter BoolParameter::BoolParameter(const char* name_, const char* desc_, bool v) @@ -389,7 +397,7 @@ void BinaryParameter::setParam(const void* v, int len) { #ifdef WIN32 Lock l(configLock); #endif - if (immutable) return; + if (immutable) return; vlog.debug("set %s(Binary)", getName()); delete [] value; value = 0; if (len) { diff --git a/rfb/Configuration.h b/rfb/Configuration.h index 20aec992..d50c1cb1 100644 --- a/rfb/Configuration.h +++ b/rfb/Configuration.h @@ -97,6 +97,7 @@ namespace rfb { virtual char* getDefaultStr() const; virtual char* getValueStr() const; virtual bool isBool() const; + virtual void setImmutable(); private: VoidParameter* param; }; -- 2.39.5