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
diff --git a/rfb/Configuration.cxx b/rfb/Configuration.cxx
index fc68210..f4b9f95 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 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 @@
       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 @@
   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 @@
 #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 20aec99..d50c1cb 100644
--- a/rfb/Configuration.h
+++ b/rfb/Configuration.h
@@ -97,6 +97,7 @@
     virtual char* getDefaultStr() const;
     virtual char* getValueStr() const;
     virtual bool isBool() const;
+    virtual void setImmutable();
   private:
     VoidParameter* param;
   };