Fix java-client generation of HIDL code
hidl_vec<T> and hidl_string was recently changed to use uint32_t for mSize
field instead of size_t. See ag/1640383
As a result Java clients started to crash because the size of hidl_vec and
hidl_string was reduced to 16 bytes and Java gen code was not adjusted.
Test: our java client is no longer crashing
Change-Id: I506ecd61277e3a4df96a10180c46ea924a42235d
Fix: b/33038659
diff --git a/VectorType.cpp b/VectorType.cpp
index 26eac76..ba4ec6b 100644
--- a/VectorType.cpp
+++ b/VectorType.cpp
@@ -559,9 +559,9 @@
out.unindent();
out << fieldName << ".clear();\n";
- out << "long _hidl_vec_size = "
+ out << "int _hidl_vec_size = "
<< blobName
- << ".getInt64("
+ << ".getInt32("
<< offset
<< " + 8 /* offsetof(hidl_vec<T>, mSize) */);\n";
@@ -608,19 +608,19 @@
out << "{\n";
out.indent();
- out << "long _hidl_vec_size = "
+ out << "int _hidl_vec_size = "
<< fieldName
<< ".size();\n";
out << blobName
- << ".putInt64("
+ << ".putInt32("
<< offset
<< " + 8 /* offsetof(hidl_vec<T>, mSize) */, _hidl_vec_size);\n";
out << blobName
<< ".putBool("
<< offset
- << " + 16 /* offsetof(hidl_vec<T>, mOwnsBuffer) */, false);\n";
+ << " + 12 /* offsetof(hidl_vec<T>, mOwnsBuffer) */, false);\n";
size_t elementAlign, elementSize;
elementType->getAlignmentAndSize(&elementAlign, &elementSize);
@@ -724,7 +724,7 @@
void VectorType::getAlignmentAndSize(size_t *align, size_t *size) const {
*align = 8; // hidl_vec<T>
- *size = 24;
+ *size = 16;
}
} // namespace android