Index: trunk/Include/Classes/System/Collections/ArrayList.ab
===================================================================
--- trunk/Include/Classes/System/Collections/ArrayList.ab	(revision 308)
+++ trunk/Include/Classes/System/Collections/ArrayList.ab	(revision 309)
@@ -10,5 +10,5 @@
 	capacity As Long
 
-	Sub Init( size As Long )
+	Sub Init( capacity As Long )
 		If size < 0 Then
 			' Error
@@ -16,8 +16,8 @@
 		End If
 
-		This.size = size
+		This.size = 0
 		This.capacity = size
 
-		pObject = GC_malloc( SizeOf(*Object) * size + 1 )
+		pObject = GC_malloc( SizeOf(*Object) * size )
 		If pObject = 0 Then
 			' OutOfMemoryException
@@ -26,21 +26,22 @@
 	End Sub
 
-	Sub Realloc( size As Long )
-		If size > capacity Then
-			' miss!
-			Debug
-		End If
-
-		pObject = realloc( pObject, SizeOf(*Object) * size + 1  )
-		If pObject = 0 Then
+	Sub Realloc( newSize As Long )
+'		If newSize > capacity Then
+'			' miss!
+'			Debug
+'		End If
+
+		Dim p = realloc( pObject, SizeOf(*Object) * newSize  )
+		If p = 0 Then
 			' OutOfMemoryException
 			Debug
-		End If
-		capacity = size
+		Else
+			pObject = p
+		End If
+		capacity = newSize
 	End Sub
 
 	Sub SetLeastCapacity( capacity As Long )
 		If This.capacity < capacity Then
-			This.capacity = capacity 
 			Realloc(capacity)
 		End If
@@ -112,5 +113,5 @@
 	'   Constractors
 	Sub ArrayList()
-		Init( 0 )
+		Init( 16 )
 	End Sub
 /*
@@ -133,6 +134,6 @@
 		SetLeastCapacity( size + 1 )
 		pObject[size] = object
+		Add = size
 		size++
-		Return size - 1
 	End Function
 
@@ -187,4 +188,5 @@
 		Dim arrayList = New ArrayList( size )
 		memcpy( arrayList.pObject, This.pObject, SizeOf(*Object) * size )
+		arrayList.size = This.size
 		Return arrayList
 	End Function
@@ -260,5 +262,4 @@
 		If i > 0 Then
 			RemoveAt(i)
-			size--
 		End If
 	End Sub
@@ -266,5 +267,4 @@
 	Override Sub RemoveAt(i As Long)
 		RemoveRange(i, 1)
-		size--
 	End Sub
 	
@@ -336,5 +336,5 @@
 		Dim i As Long
 		For i = 0 To ELM(c)
-			Repeat->Add(x)
+			Repeat.Add(x)
 		Next
 	End Function
