Skip to content

Commit 66207b8

Browse files
ctf: correctly parse integer size
Change-Id: I60f3854afcdf4454847ca49bfdee0ca7d89f9601 Signed-off-by: Matthew Khouzam <matthew.khouzam@ericsson.com>
1 parent 62a535b commit 66207b8

1 file changed

Lines changed: 8 additions & 4 deletions

File tree

ctf/org.eclipse.tracecompass.ctf.core/src/org/eclipse/tracecompass/internal/ctf/core/event/metadata/tsdl/integer/IntegerDeclarationParser.java

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -152,8 +152,11 @@ public IntegerDeclaration parse(ICTFMetadataNode integer, ICommonTreeParserParam
152152

153153
Encoding encoding = Encoding.NONE;
154154

155-
if (integer instanceof JsonStructureFieldMemberMetadataNode) {
156-
JsonStructureFieldMemberMetadataNode member = (JsonStructureFieldMemberMetadataNode) integer;
155+
if (integer instanceof JsonStructureFieldMemberMetadataNode member) {
156+
JsonElement fieldClassElement = member.getFieldClass();
157+
if (fieldClassElement == null || !fieldClassElement.isJsonObject()) {
158+
throw new ParseException(getClass().getName() + " fieldclass must be a json object."); //$NON-NLS-1$
159+
}
157160
JsonObject fieldclass = member.getFieldClass().getAsJsonObject();
158161
role = member.getRole();
159162
// by default fieldclass is unsigned
@@ -193,7 +196,7 @@ public IntegerDeclaration parse(ICTFMetadataNode integer, ICommonTreeParserParam
193196
return IntegerDeclaration.createVarintDeclaration(signed, base, role, true);
194197
}
195198
if (fieldclass.has(ALIGNMENT)) {
196-
alignment = fieldclass.get(ALIGNMENT).getAsInt();
199+
alignment = AlignmentParser.INSTANCE.parse(member, null);
197200
}
198201
size = fieldclass.get(LENGTH).getAsInt();
199202

@@ -262,7 +265,8 @@ public IntegerDeclaration parse(ICTFMetadataNode integer, ICommonTreeParserParam
262265
}
263266

264267
if (mappings.size() > 0) {
265-
return IntegerDeclaration.createDeclaration(base, signed, base, byteOrder, encoding, clock, alignment, role, mappings);
268+
269+
return IntegerDeclaration.createDeclaration((int) size, signed, base, byteOrder, encoding, clock, alignment, role, mappings);
266270
}
267271

268272
return IntegerDeclaration.createDeclaration((int) size, signed, base,

0 commit comments

Comments
 (0)