Skip to content

[SR-12931] Data.replaceSubrange crashes on devices 32 bits #4384

Open
@swift-ci

Description

@swift-ci
Previous ID SR-12931
Radar None
Original Reporter nghiahoang (JIRA User)
Type Bug
Environment

Swift 5
Xcode 11.3
Devices 32 bits

Additional Detail from JIRA
Votes 0
Component/s Foundation
Labels Bug, RunTimeCrash
Assignee None
Priority Medium

md5: 2317f2c652a5b6739d4d47e28039ae97

Issue Description:

1. Steps to reproduce:

var data = Data.init(count: 837933)     // count is larger than Int16.max
data.removeSubrange(0..<834385)         // upperBound is larger than Int16.max

2. Seems that it's crashed in

internal struct InlineSlice {
   ...

   @inlinable // This is @inlinable as a convenience initializer.
   init(_ large: LargeSlice) {
      assert(large.range.lowerBound < HalfInt.max)
      assert(large.range.upperBound < HalfInt.max)
      self.init(large.storage, range: large.range)
   }

   ...
}

Because HalfInt on 32 bits devices is Int16, so assert large.range.upperBound < HalfInt.max is failed.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions