Skip to content

ManagedReferencesRegistry version 1 #347

@shimamura-sakura

Description

@shimamura-sakura

Not handling this results in segfault (with boost on) or "Expected to read xxx bytes, but only read yyy bytes" error (with boost off).

Its typetree from one of my files (int vesion = 1)

ManagedReferencesRegistry references // typeFlag=4 metaFlag=8001
	int version // typeFlag=0 metaFlag=1
	ReferencedObject 00000000 // typeFlag=0 metaFlag=8001
		ReferencedManagedType type // typeFlag=0 metaFlag=208001
			string class // typeFlag=0 metaFlag=208001
				Array Array // typeFlag=1 metaFlag=204001
					int size // typeFlag=0 metaFlag=200001
					char data // typeFlag=0 metaFlag=200001
			string ns // typeFlag=0 metaFlag=208001
				Array Array // typeFlag=1 metaFlag=204001
					int size // typeFlag=0 metaFlag=200001
					char data // typeFlag=0 metaFlag=200001
			string asm // typeFlag=0 metaFlag=208001
				Array Array // typeFlag=1 metaFlag=204001
					int size // typeFlag=0 metaFlag=200001
					char data // typeFlag=0 metaFlag=200001
		ReferencedObjectData data // typeFlag=0 metaFlag=1

Only one ReferencedObject is listed in the tree, however there are more ReferencedObject's after that.
Specifically, only stop when you get a ReferencedManagedType of ("Terminus", "UnityEngine.DMAT", "FAKE_ASM").
And in this case, managedRefArrayItem.id seems to be an index into this ReferencedObject array.

See also: https://github.com/Unity-Technologies/UnityDataTools/blob/main/TextDumper/TextDumperTool.cs#L308

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions