Skip to content

Commit c41ea19

Browse files
committed
grpc-pb: Fix string encoding bug
Signed-off-by: Johannes Zottele <[email protected]>
1 parent d1b5cd0 commit c41ea19

File tree

1 file changed

+4
-3
lines changed

1 file changed

+4
-3
lines changed

grpc/grpc-core/src/nativeMain/kotlin/kotlinx/rpc/grpc/pb/WireEncoder.native.kt

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,8 @@ internal class WireEncoderNative(private val sink: Sink) : WireEncoder {
112112
return pw_encoder_write_string(raw, fieldNr, null, 0)
113113
}
114114
val cStr = value.cstr
115-
return pw_encoder_write_string(raw, fieldNr, cStr.ptr, cStr.size)
115+
val len = cStr.size - 1 // minus 1 as it also counts the null terminator
116+
return pw_encoder_write_string(raw, fieldNr, cStr.ptr, len)
116117
}
117118

118119
override fun writeBytes(fieldNr: Int, value: ByteArray): Boolean {
@@ -166,7 +167,7 @@ internal class WireEncoderNative(private val sink: Sink) : WireEncoder {
166167
override fun <T : InternalMessage> writeMessage(
167168
fieldNr: Int,
168169
value: T,
169-
encode: T.(WireEncoder) -> Unit
170+
encode: T.(WireEncoder) -> Unit,
170171
) {
171172
pw_encoder_write_tag(raw, fieldNr, WireType.LENGTH_DELIMITED.ordinal)
172173
pw_encoder_write_int32_no_tag(raw, value._size)
@@ -184,7 +185,7 @@ private inline fun <T> WireEncoderNative.writePackedInternal(
184185
fieldNr: Int,
185186
value: List<T>,
186187
fieldSize: Int,
187-
crossinline writer: (CValuesRef<pw_encoder_t>?, T) -> Boolean
188+
crossinline writer: (CValuesRef<pw_encoder_t>?, T) -> Boolean,
188189
): Boolean {
189190
pw_encoder_write_tag(raw, fieldNr, WireType.LENGTH_DELIMITED.ordinal)
190191
// write the field size of the packed field

0 commit comments

Comments
 (0)