Fix display of hex char literals in device tree source format #69
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The format specifier
PRIx8
for unsigned integers was used with asigned character parameter, yielding unexpected results with values > 0x7F.
If you run for instance
dtc -I dts -O dts tests/escapes.dts
, you can noticethat the value of the
escape-str-2
property, which is initially"\xde\xad\xbe\xef"
, is notprinted correctly:
This happens because the signed character is type-converted to an int, which should not be used with the
%x
format specifier.I fixed this by casting to an
unsigned char
; another possible way is to addhh
to the format specifier but I find the former more self-explanatory.For a bit of context, I found this as I was attempting to "canonize" DTS files by running
dtc -I dts -O dts
until it reached a fix-point (it so happens that resolution of path and label refs leave an extra space -- due to the markers -- in data blobs, so one must run dtc twice on a file to reach a stable result).