$NetBSD: patch-an,v 1.1 2004/06/04 11:19:32 shannonjr Exp $

--- ddd/VarArray.h.orig	2004-05-11 15:49:41.000000000 -0600
+++ ddd/VarArray.h
@@ -29,7 +29,7 @@
 #ifndef _DDD_VarArray_h
 #define _DDD_VarArray_h
 
-#if defined(__GNUC_MINOR__) && (__GNUC_MINOR__ >= 5)
+#ifdef __GNUG__
 #pragma interface
 #endif
 
@@ -53,7 +53,7 @@ protected:
     // Add a value
     virtual void add(const T& v)
     {
-	value(_size) = v;	// gcc-2.3.3 chokes on having _size++ here
+        this->value(_size) = v;	// gcc-2.3.3 chokes on having _size++ here
 	_size++;
     }
 
@@ -109,8 +109,10 @@ public:
     // Assignment
     VarArray<T>& operator = (const VarArray<T>& m)
     { 
-	DynArray<T>::operator = (m);
-	_size = m.size();
+        if (this != &m) {
+	  DynArray<T>::operator = (m);
+	  _size = m.size();
+	}
 	return *this;
     }
 
@@ -118,7 +120,7 @@ public:
     void operator += (const T& value) { add(value); }
     void operator -= (const T& value) { remove(value); }
 
-    T& operator[](int i) const 
+    const T& operator[](int i) const 
     { 
 	assert(i >= 0 && i < size());
 	return DynArray<T>::operator[](i); 
