]> git.mxchange.org Git - simgear.git/commitdiff
Patch from Frederic Bouvier:
authordavid <david>
Sun, 7 Apr 2002 21:28:43 +0000 (21:28 +0000)
committerdavid <david>
Sun, 7 Apr 2002 21:28:43 +0000 (21:28 +0000)
A const char * is not supposed to change and cannot be deleted. So
here is a patch that remove unnecessary const from props.hxx and
props.cxx. There also is the addition of a friend directive because
nested classes do not receive special privileges and cannot access
private members of the outer class.

simgear/misc/props.cxx
simgear/misc/props.hxx

index af2044a47983d3507395c3f06921985d61c6db5b..19cb3a98d38dfb62d2599782767ed93cfd5fcc93 100644 (file)
@@ -215,7 +215,7 @@ parse_path (const string &path, vector<PathComponent> &components)
 ////////////////////////////////////////////////////////////////////////
 
 
 ////////////////////////////////////////////////////////////////////////
 
 
-static const char *
+static char *
 copy_string (const char * s)
 {
                                // FIXME: potential buffer overflow.
 copy_string (const char * s)
 {
                                // FIXME: potential buffer overflow.
@@ -417,7 +417,7 @@ SGPropertyNode::set_string (const char * val)
   if (_tied) {
     return _value.string_val->setValue(val);
   } else {
   if (_tied) {
     return _value.string_val->setValue(val);
   } else {
-    delete [] (char *)_local_val.string_val;
+    delete [] _local_val.string_val;
     _local_val.string_val = copy_string(val);
     return true;
   }
     _local_val.string_val = copy_string(val);
     return true;
   }
@@ -473,7 +473,7 @@ SGPropertyNode::clear_value ()
       delete _value.string_val;
       _value.string_val = 0;
     } else {
       delete _value.string_val;
       _value.string_val = 0;
     } else {
-      delete [] (char *)_local_val.string_val;
+      delete [] _local_val.string_val;
     }
     _local_val.string_val = 0;
     break;
     }
     _local_val.string_val = 0;
     break;
@@ -675,7 +675,7 @@ SGPropertyNode::SGPropertyNode (const char * name,
  */
 SGPropertyNode::~SGPropertyNode ()
 {
  */
 SGPropertyNode::~SGPropertyNode ()
 {
-  delete [] (char *)_name;
+  delete [] _name;
   for (int i = 0; i < (int)_children.size(); i++) {
     delete _children[i];
   }
   for (int i = 0; i < (int)_children.size(); i++) {
     delete _children[i];
   }
index 1be0c093c307dffdfa25c75f6ced07309c058f15..a5e8528b6b7c5bd9ee32b140461cdd1cbfb74ab6 100644 (file)
@@ -1081,7 +1081,7 @@ private:
 
   class hash_table;
 
 
   class hash_table;
 
-  const char * _name;
+  char * _name;
   int _index;
   SGPropertyNode * _parent;
   vector<SGPropertyNode *> _children;
   int _index;
   SGPropertyNode * _parent;
   vector<SGPropertyNode *> _children;
@@ -1107,7 +1107,7 @@ private:
     long long_val;
     float float_val;
     double double_val;
     long long_val;
     float float_val;
     double double_val;
-    const char * string_val;
+    char * string_val;
   } _local_val;
 
 
   } _local_val;
 
 
@@ -1130,7 +1130,7 @@ private:
       virtual SGPropertyNode * get_value () { return _value; }
       virtual void set_value (SGPropertyNode * value);
     private:
       virtual SGPropertyNode * get_value () { return _value; }
       virtual void set_value (SGPropertyNode * value);
     private:
-      const char * _key;
+      char * _key;
       SGPropertyNode * _value;
     };
 
       SGPropertyNode * _value;
     };
 
@@ -1148,6 +1148,8 @@ private:
       entry ** _entries;
     };
 
       entry ** _entries;
     };
 
+    friend class bucket;
+
     hash_table ();
     virtual ~hash_table ();
     virtual SGPropertyNode * get (const char * key);
     hash_table ();
     virtual ~hash_table ();
     virtual SGPropertyNode * get (const char * key);