| Summary: | "%$S" does not work in System_sprintf | ||
|---|---|---|---|
| Product: | [Technology] RTSC | Reporter: | Todd Mullanix <todd_mullanix> |
| Component: | Runtime | Assignee: | Sasha Slijepcevic <sascha> |
| Status: | CLOSED FIXED | QA Contact: | |
| Severity: | normal | ||
| Priority: | P3 | ||
| Version: | unspecified | ||
| Target Milestone: | --- | ||
| Hardware: | All | ||
| OS: | All | ||
| Whiteboard: | |||
| Bug Depends on: | |||
| Bug Blocks: | 336776 | ||
For the $S specifier, System_printfExtend__I invokes System_doPrint, which adds characters to the buffer but does not advance the buffer pointer. System_printfExtend__I does not do it either, so after the argument consumed by the specifier is added to the buffer, the rest of the original format string is added over the argument instead after it. - fixed in xdc-w25 Added statements that update the buffer pointer after the string argument replaces $S conversion specifier. closing "ancient" resolved bugs |
I’m seeing a problem with System_sprintf. I have SysStd as the provider. When I try to use %$S, the printf works, but sprintf does not. Below is the output of the different test cases. Note: the sprintf cases’ output is the memory window for the string (in char and 8-bit signed decimal). I initialized the strings to all ‘4’s to make it easier to see… System_printf("Test [%$S]\n", "ab<%d>cd", 10); Output: Test [ab<10>cd] System_sprintf(tempStr1, "Test [%$S]\n", "ab<%d>cd", 10); tempStr1 char: Test.[]..10>cd.44 tempStr1 decimal: 84 101 115 116 32 91 93 10 0 49 48 62 99 100 0 52 52 T e s t <sp> [ ] lf \0 1 0 > c d \0 4 4 System_asprintf was the same as System_sprintf I’ve tried this on 3.20.03.63 and 3.20.05.76. The %$S is used in Log_error/warning/info calls. My new logger is using System_sprintf to help decode into a string and it is messed up for the Log_error/warning/info calls.