This is an automated email from the ASF dual-hosted git repository.
chaokunyang pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/fury.git
The following commit(s) were added to refs/heads/main by this push:
new 7c2eac1e fix(java): ensure readVarUint36Small reads full bits
regardless of remaining buffer size (#2179)
7c2eac1e is described below
commit 7c2eac1e99362df555e69c8d4382037423b7b3ca
Author: LouShaokun <[email protected]>
AuthorDate: Thu Apr 24 19:17:58 2025 +0800
fix(java): ensure readVarUint36Small reads full bits regardless of
remaining buffer size (#2179)
<!--
**Thanks for contributing to Fury.**
**If this is your first time opening a PR on fury, you can refer to
[CONTRIBUTING.md](https://github.com/apache/fury/blob/main/CONTRIBUTING.md).**
Contribution Checklist
- The **Apache Fury (incubating)** community has restrictions on the
naming of PR titles. You can also find instructions in
[CONTRIBUTING.md](https://github.com/apache/fury/blob/main/CONTRIBUTING.md).
- Fury has a strong focus on performance. If the PR you submit will have
an impact on performance, please benchmark it first and provide the
benchmark result here.
-->
## What does this PR do?
This PR fixes the inconsistent behavior of `readVarUint36Small()` when
reading from buffers of different remaining sizes.
- Aligns the fast path and slow path so both read the full 36 bits.
- Updates the bit‐extraction in the slow path (`readVarUint36Slow()`) to
match the fast path’s handling of the high‐order bits.
## Related issues
- #2110
## Does this PR introduce any user‐facing change?
No user‐facing changes are introduced.
- [ ] Does this PR introduce any public API change?
- [ ] Does this PR introduce any binary protocol compatibility change?
## Benchmark
No measurable performance impact is expected, as the fix only adjusts
bit extraction logic without altering code paths.
Benchmark
---
java/fury-core/src/main/java/org/apache/fury/memory/MemoryBuffer.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git
a/java/fury-core/src/main/java/org/apache/fury/memory/MemoryBuffer.java
b/java/fury-core/src/main/java/org/apache/fury/memory/MemoryBuffer.java
index e9f4ba11..e5dda580 100644
--- a/java/fury-core/src/main/java/org/apache/fury/memory/MemoryBuffer.java
+++ b/java/fury-core/src/main/java/org/apache/fury/memory/MemoryBuffer.java
@@ -1800,7 +1800,7 @@ public final class MemoryBuffer {
result |= (b & 0x7F) << 21;
if ((b & 0x80) != 0) {
b = readByte();
- result |= (b & 0x7F) << 28;
+ result |= (b & 0xFF) << 28;
}
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]