Ignore:
Timestamp:
Jun 2, 2007, 7:04:19 PM (17 years ago)
Author:
イグトランス (egtra)
Message:

StringのResizeを呼ぶコンストラクタでメモリ確保されない場合を排除、ほか微修正

File:
1 edited

Legend:

Unmodified
Added
Removed
  • Include/Classes/System/String.ab

    r253 r268  
    216216        Sub ReSize(allocLength As Long)
    217217            If allocLength < 0 Then Exit Sub
    218             If allocLength > m_Length Then
    219                 Dim oldLength As Long
    220                 oldLength = m_Length
    221                 If AllocStringBuffer(allocLength) <> 0 Then
     218            Dim oldLength  = m_Length
     219            If AllocStringBuffer(allocLength) <> 0 Then
     220                If allocLength > oldLength Then
    222221                    ZeroMemory(VarPtr(Chars[oldLength]), SizeOf (StrChar) * (m_Length - oldLength + 1))
     222                Else
     223                    Chars[m_Length] = 0
    223224                End If
    224             Else
    225                 m_Length = allocLength
     225            End If
     226        End Sub
     227
     228        Sub ReSize(allocLength As Long, c As StrChar)
     229            If allocLength < 0 Then Exit Sub
     230            Dim oldLength = m_Length
     231            If AllocStringBuffer(allocLength) <> 0 Then
     232                If allocLength > oldLength Then
     233                    _System_FillChar(VarPtr(Chars[oldLength]), (m_Length - oldLength) As SIZE_T, c)
     234                End If
    226235                Chars[m_Length] = 0
    227236            End If
    228         End Sub
    229 
    230         Sub ReSize(allocLength As Long, c As StrChar)
    231             If allocLength < 0 Then
    232                 Exit Sub
    233             ElseIf allocLength > m_Length Then
    234                 Dim oldLength As Long
    235                 oldLength = m_Length
    236                 If AllocStringBuffer(allocLength) <> 0 Then
    237                     Dim p = VarPtr(Chars[oldLength]) As *StrChar
    238                     Dim fillLen = m_Length - oldLength
    239                     Dim i As Long
    240                     For i = 0 To ELM(fillLen)
    241                         p[i] = c
    242                     Next
    243                 End If
    244             Else
    245                 m_Length = allocLength
    246             End If
    247             Chars[m_Length] = 0
    248237        End Sub
    249238
Note: See TracChangeset for help on using the changeset viewer.