Ignore:
Timestamp:
Aug 27, 2007, 12:12:32 AM (17 years ago)
Author:
イグトランス (egtra)
Message:

コンストラクタのLong型引数の値はcapacityを指定するものなのに、sizeまで設定されていたことを修正

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Include/Classes/System/Collections/ArrayList.ab

    r291 r309  
    1010    capacity As Long
    1111
    12     Sub Init( size As Long )
     12    Sub Init( capacity As Long )
    1313        If size < 0 Then
    1414            ' Error
     
    1616        End If
    1717
    18         This.size = size
     18        This.size = 0
    1919        This.capacity = size
    2020
    21         pObject = GC_malloc( SizeOf(*Object) * size + 1 )
     21        pObject = GC_malloc( SizeOf(*Object) * size )
    2222        If pObject = 0 Then
    2323            ' OutOfMemoryException
     
    2626    End Sub
    2727
    28     Sub Realloc( size As Long )
    29         If size > capacity Then
    30             ' miss!
    31             Debug
    32         End If
    33 
    34         pObject = realloc( pObject, SizeOf(*Object) * size + 1  )
    35         If pObject = 0 Then
     28    Sub Realloc( newSize As Long )
     29'       If newSize > capacity Then
     30'           ' miss!
     31'           Debug
     32'       End If
     33
     34        Dim p = realloc( pObject, SizeOf(*Object) * newSize  )
     35        If p = 0 Then
    3636            ' OutOfMemoryException
    3737            Debug
    38         End If
    39         capacity = size
     38        Else
     39            pObject = p
     40        End If
     41        capacity = newSize
    4042    End Sub
    4143
    4244    Sub SetLeastCapacity( capacity As Long )
    4345        If This.capacity < capacity Then
    44             This.capacity = capacity
    4546            Realloc(capacity)
    4647        End If
     
    112113    '   Constractors
    113114    Sub ArrayList()
    114         Init( 0 )
     115        Init( 16 )
    115116    End Sub
    116117/*
     
    133134        SetLeastCapacity( size + 1 )
    134135        pObject[size] = object
     136        Add = size
    135137        size++
    136         Return size - 1
    137138    End Function
    138139
     
    187188        Dim arrayList = New ArrayList( size )
    188189        memcpy( arrayList.pObject, This.pObject, SizeOf(*Object) * size )
     190        arrayList.size = This.size
    189191        Return arrayList
    190192    End Function
     
    260262        If i > 0 Then
    261263            RemoveAt(i)
    262             size--
    263264        End If
    264265    End Sub
     
    266267    Override Sub RemoveAt(i As Long)
    267268        RemoveRange(i, 1)
    268         size--
    269269    End Sub
    270270   
     
    336336        Dim i As Long
    337337        For i = 0 To ELM(c)
    338             Repeat->Add(x)
     338            Repeat.Add(x)
    339339        Next
    340340    End Function
Note: See TracChangeset for help on using the changeset viewer.