Skip to content

preserve integer width in JsonExporter::fromJson - #1186

Open
aysha-afrah26 wants to merge 1 commit into
BehaviorTree:masterfrom
aysha-afrah26:json-import-integer-width
Open

preserve integer width in JsonExporter::fromJson#1186
aysha-afrah26 wants to merge 1 commit into
BehaviorTree:masterfrom
aysha-afrah26:json-import-integer-width

Conversation

@aysha-afrah26

Copy link
Copy Markdown
Contributor

ExportBlackboardToJSON writes int64_t and uint64_t entries out at full width, but fromJson read every JSON integer back with nlohmann's get(), which is just a static_cast of the stored 64-bit value with no range check. Anything outside the int32 range wraps silently, so a saved int64_t of 5000000000 comes back as 705032704 and 4294967296 comes back as 0, and the same happens to any value fed through ImportBlackboardFromJSON or ImportTreeFromJSON when restoring tree state. I hit it doing an export/import round-trip and noticing the restored counter no longer matched. The fix keeps the width during import: values that fit in int stay int, larger magnitudes stay uint64_t or int64_t to match what toJson already emits. Small integers are unaffected, so the common case behaves exactly as before. Added a regression test that imports the out-of-range values and checks the round-trip.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant