Skip to content

Commit a7ea914

Browse files
committed
Fix a few API call bugs in native
1 parent 64d9233 commit a7ea914

File tree

2 files changed

+22
-11
lines changed

2 files changed

+22
-11
lines changed

src/nativeMain/kotlin/maryk/rocksdb/AbstractComparator.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ actual abstract class AbstractComparator
2626
private val pinnedName: CPointer<ByteVar> by lazy {
2727
val actualName = name()
2828
val nameBytes = (actualName + "\u0000").encodeToByteArray()
29-
val mem = nativeHeap.allocArray<ByteVar>(nameBytes.size + 1)
29+
val mem = nativeHeap.allocArray<ByteVar>(nameBytes.size)
3030

3131
nameBytes.usePinned { pinned: Pinned<ByteArray> ->
3232
memcpy(mem, pinned.addressOf(0), nameBytes.size.convert())

src/nativeMain/kotlin/maryk/rocksdb/RocksDB.kt

Lines changed: 21 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -254,7 +254,7 @@ internal constructor(
254254
memScoped {
255255
rocksdb_put(
256256
native,
257-
defaultWriteOptions.native,
257+
writeOpts.native,
258258
byteArrayToCPointer(key, offset, len),
259259
len.toULong(),
260260
byteArrayToCPointer(value, vOffset, vLen),
@@ -557,7 +557,7 @@ internal constructor(
557557
wrapWithErrorThrower { error ->
558558
rocksdb_merge_cf(
559559
native,
560-
defaultWriteOptions.native,
560+
writeOpts.native,
561561
columnFamilyHandle.native,
562562
byteArrayToCPointer(key, offset, len),
563563
len.toULong(),
@@ -611,8 +611,14 @@ internal constructor(
611611
valueLength.ptr,
612612
error
613613
)?.let {
614+
val length = valueLength.value.toInt()
615+
616+
for (index in 0 until min(length, vLen)) {
617+
value[index + vOffset] = it[index]
618+
}
619+
614620
rocksdb.rocksdb_free(it)
615-
valueLength.value.toInt()
621+
length
616622
}
617623
} ?: rocksDBNotFound
618624
}
@@ -667,7 +673,7 @@ internal constructor(
667673
native,
668674
opt.native,
669675
byteArrayToCPointer(key, offset, len),
670-
key.size.toULong(),
676+
len.toULong(),
671677
valueLength.ptr,
672678
error
673679
)?.let {
@@ -695,7 +701,7 @@ internal constructor(
695701
return wrapWithNullErrorThrower { error ->
696702
rocksdb_get_cf(
697703
native,
698-
defaultReadOptions.native,
704+
opt.native,
699705
columnFamilyHandle.native,
700706
key.toCValues(),
701707
key.size.toULong(),
@@ -709,7 +715,6 @@ internal constructor(
709715
}
710716

711717
rocksdb.rocksdb_free(it)
712-
713718
length
714719
}
715720
} ?: rocksDBNotFound
@@ -733,13 +738,19 @@ internal constructor(
733738
native,
734739
opt.native,
735740
columnFamilyHandle.native,
736-
key.toCValues(),
737-
key.size.toULong(),
741+
byteArrayToCPointer(key, offset, len),
742+
len.toULong(),
738743
valueLength.ptr,
739744
error
740745
)?.let {
746+
val length = valueLength.value.toInt()
747+
748+
for (index in 0 until min(length, vLen)) {
749+
value[index + vOffset] = it[index]
750+
}
751+
741752
rocksdb.rocksdb_free(it)
742-
valueLength.value.toInt()
753+
length
743754
}
744755
} ?: rocksDBNotFound
745756
}
@@ -1409,7 +1420,7 @@ internal constructor(
14091420
val fileName = rocksdb_sst_file_metadata_get_relative_filename(sstMetaData)
14101421
val directory = rocksdb_sst_file_metadata_get_directory(sstMetaData)
14111422
val smallestKey = rocksdb_sst_file_metadata_get_smallestkey(sstMetaData, smallestKeyLength.ptr)
1412-
val largestKey = rocksdb_sst_file_metadata_get_smallestkey(sstMetaData, largestKeyLength.ptr)
1423+
val largestKey = rocksdb.rocksdb_sst_file_metadata_get_largestkey(sstMetaData, largestKeyLength.ptr)
14131424
add(
14141425
SstFileMetaData(
14151426
fileName = fileName!!.toKString(),

0 commit comments

Comments
 (0)