[wpiutil] DynamicStruct: Fix decoding of signed integers (#7350)

Add tests for both C++ and Java.
This commit is contained in:
Ryan Blue
2024-11-05 19:45:49 -05:00
committed by GitHub
parent 3113627be6
commit 83fa422338
3 changed files with 170 additions and 31 deletions

View File

@@ -423,7 +423,17 @@ class DynamicStruct {
int64_t GetIntField(const StructFieldDescriptor* field,
size_t arrIndex = 0) const {
assert(field->IsInt());
return GetFieldImpl(field, arrIndex);
uint64_t raw = GetFieldImpl(field, arrIndex);
switch (field->m_size) {
case 1:
return static_cast<int8_t>(raw);
case 2:
return static_cast<int16_t>(raw);
case 4:
return static_cast<int32_t>(raw);
default:
return raw;
}
}
/**