Skip to content

Commit 48ac273

Browse files
authored
Merge pull request #3 from philmitchell/kotlin_native_fixes
Kotlin native fixes
2 parents e9661de + f0ea76c commit 48ac273

File tree

1 file changed

+10
-6
lines changed

1 file changed

+10
-6
lines changed

src/main/io/uuddlrlrba/ktalgs/datastructures/PriorityQueue.kt

+10-6
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ class PriorityQueue<T>(size: Int, val comparator: Comparator<T>? = null) : Colle
6767
private fun resize() {
6868
val old = arr
6969
arr = Array<Comparable<T>?>(size * 2, { null }) as Array<T?>
70-
System.arraycopy(old, 0, arr, 0, size + 1)
70+
old.copyInto(arr, 0, 0, size)
7171
}
7272

7373
public override fun isEmpty(): Boolean {
@@ -94,12 +94,16 @@ class PriorityQueue<T>(size: Int, val comparator: Comparator<T>? = null) : Colle
9494

9595
companion object {
9696
private fun<T> greater(arr: Array<T?>, i: Int, j: Int, comparator: Comparator<T>? = null): Boolean {
97-
if (comparator != null) {
98-
return comparator.compare(arr[i], arr[j]) > 0
99-
} else {
100-
val left = arr[i]!! as Comparable<T>
101-
return left > arr[j]!!
97+
// Remove nullability from values because comparator is not defined for nullables
98+
val left = arr[i] ?: return false
99+
val right = arr[j] ?: return true
100+
101+
comparator?.let {
102+
return it.compare(left, right) > 0
102103
}
104+
105+
val leftC = left as Comparable<T>
106+
return leftC > right
103107
}
104108

105109
public fun<T> sink(arr: Array<T?>, a: Int, size: Int, comparator: Comparator<T>? = null) {

0 commit comments

Comments
 (0)