Skip to content

Commit 8bdd46e

Browse files
ctf: Use declared length as size for BlobDefinitions
Change-Id: I30afb71bbcf7ff688590b95b7f48caf53b9d3ed4 Signed-off-by: Matthew Khouzam <[email protected]>
1 parent 44806e8 commit 8bdd46e

File tree

3 files changed

+14
-9
lines changed

3 files changed

+14
-9
lines changed

ctf/org.eclipse.tracecompass.ctf.core/src/org/eclipse/tracecompass/ctf/core/event/types/BlobDeclaration.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ public long getAlignment() {
9191
*/
9292
@Override
9393
public int getMaximumSize() {
94-
return 1000000;
94+
return Math.min(fLength, 1000000);
9595
}
9696

9797
@Override

ctf/org.eclipse.tracecompass.ctf.core/src/org/eclipse/tracecompass/internal/ctf/core/event/metadata/tsdl/struct/StructParser.java

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@
3030
import org.eclipse.tracecompass.internal.ctf.core.event.types.StructDeclarationFlattener;
3131
import org.eclipse.tracecompass.internal.ctf.core.utils.JsonMetadataStrings;
3232

33+
import com.google.gson.JsonElement;
34+
3335
/**
3436
*
3537
* Structures are aligned on the largest alignment required by basic types
@@ -197,19 +199,18 @@ public StructDeclaration parse(ICTFMetadataNode struct, ICommonTreeParserParamet
197199
structBody = struct;
198200
}
199201
} else if (struct instanceof JsonStructureFieldMemberMetadataNode) {
200-
ICTFMetadataNode innerNode = struct.getChild(JsonMetadataStrings.STRUCT);
201-
if (innerNode instanceof JsonStructureFieldMetadataNode) {
202-
JsonStructureFieldMetadataNode structNode = (JsonStructureFieldMetadataNode) struct;
203-
if (structNode.getMinimumAlignment() != 0) {
204-
structAlign = AlignmentParser.INSTANCE.parse(struct, null);
202+
JsonStructureFieldMemberMetadataNode memberNode = (JsonStructureFieldMemberMetadataNode) struct;
203+
if (memberNode.getFieldClass().isJsonObject()) {
204+
JsonElement minimumAlignment = memberNode.getFieldClass().getAsJsonObject().get(JsonMetadataStrings.MINIMUM_ALIGNMENT);
205+
if (minimumAlignment != null) {
206+
structAlign = minimumAlignment.getAsLong();
205207
}
206-
if (structNode.getMemberClasses() != null) {
208+
JsonElement memberClasses = memberNode.getFieldClass().getAsJsonObject().get(JsonMetadataStrings.MEMBER_CLASSES);
209+
if (memberClasses != null) {
207210
hasBody = true;
208211
structBody = struct;
209-
210212
}
211213
}
212-
213214
}
214215
/*
215216
* If a struct has just a body and no name (just like the song,

ctf/org.eclipse.tracecompass.ctf.core/src/org/eclipse/tracecompass/internal/ctf/core/utils/JsonMetadataStrings.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -237,4 +237,8 @@ private JsonMetadataStrings() {
237237
*/
238238
public static final String ELEMENT_FIELD_CLASS = "element-field-class"; //$NON-NLS-1$
239239

240+
public static final String MEMBER_CLASSES = "member-classes"; //$NON-NLS-1$
241+
242+
public static final String MINIMUM_ALIGNMENT = "minimum-alignment"; //$NON-NLS-1$
243+
240244
}

0 commit comments

Comments
 (0)