utopia-rise / godot-kotlin-jvm

Godot Kotlin JVM Module
MIT License
576 stars 39 forks source link

Rewind() called early in TransferContext #512

Closed CedNaru closed 10 months ago

CedNaru commented 10 months ago

Implement #509

C++: The idea is simple. Instead of having to call rewind() after any operation on the buffer, we simply rewind it as part of the get_buffer() method. (The buffer is stored directly inside that method, so it's the only way to get it). The only manual rewind() left is the one in icall() as I need to reset it to write the return value.

Kotlin: I decided to made TransferContext.buffer private (doesn't change its visibility from C++ through JNI). I don't think it should be used directly outside TransferContext, so I did a small rework of its methods. The goal was to remove any manual call to rewind() in the rest of the code. Rewinding should be the responsibility of TransferContext alone.