VirtualBox

Ignore:
Timestamp:
Jun 1, 2010 4:43:09 PM (15 years ago)
Author:
vboxsync
Message:

Runtime: Swapped width and precision for Rhxd/Rhsx format specifiers to match the callers.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Runtime/common/string/strformatrt.cpp

    r28800 r29963  
    9797 * Group 3, hex dumpers and other complex stuff which requires more than simple formatting.
    9898 *      - \%Rhxd            - Takes a pointer to the memory which is to be dumped in typical
    99  *                            hex format. Use the width to specify the length, and the precision to
     99 *                            hex format. Use the precision to specify the length, and the width to
    100100 *                            set the number of bytes per line. Default width and precision is 16.
    101101 *      - \%Rhxs            - Takes a pointer to the memory to be displayed as a hex string,
    102102 *                            i.e. a series of space separated bytes formatted as two digit hex value.
    103  *                            Use the width to specify the length. Default length is 16 bytes.
     103 *                            Use the precision to specify the length. Default length is 16 bytes.
     104 *                            The width, if specified, is ignored.
    104105 *      - \%Rrc             - Takes an integer iprt status code as argument. Will insert the
    105106 *                            status code define corresponding to the iprt status code.
     
    756757                    {
    757758                        uint8_t *pu8 = va_arg(*pArgs, uint8_t *);
    758                         if (cchWidth <= 0)
    759                             cchWidth = 16;
     759                        if (cchPrecision <= 0)
     760                            cchPrecision = 16;
    760761                        if (pu8)
    761762                        {
     
    770771                                    int off = 0;
    771772
    772                                     if (cchPrecision <= 0)
    773                                         cchPrecision = 16;
    774 
    775                                     while (off < cchWidth)
     773                                    if (cchWidth <= 0)
     774                                        cchWidth = 16;
     775
     776                                    while (off < cchPrecision)
    776777                                    {
    777778                                        int i;
    778779                                        cch += RTStrFormat(pfnOutput, pvArgOutput, NULL, 0, "%s%0*x %04x:", off ? "\n" : "", sizeof(pu8) * 2, (uintptr_t)pu8, off);
    779                                         for (i = 0; i < cchPrecision && off + i < cchWidth ; i++)
     780                                        for (i = 0; i < cchWidth && off + i < cchPrecision ; i++)
    780781                                            cch += RTStrFormat(pfnOutput, pvArgOutput, NULL, 0,
    781                                                                off + i < cchWidth ? !(i & 7) && i ? "-%02x" : " %02x" : "   ", pu8[i]);
    782                                         while (i++ < cchPrecision)
     782                                                               off + i < cchPrecision ? !(i & 7) && i ? "-%02x" : " %02x" : "   ", pu8[i]);
     783                                        while (i++ < cchWidth)
    783784                                            cch += pfnOutput(pvArgOutput, "   ", 3);
    784785
    785786                                        cch += pfnOutput(pvArgOutput, " ", 1);
    786787
    787                                         for (i = 0; i < cchPrecision && off + i < cchWidth; i++)
     788                                        for (i = 0; i < cchWidth && off + i < cchPrecision; i++)
    788789                                        {
    789790                                            uint8_t u8 = pu8[i];
     
    792793
    793794                                        /* next */
    794                                         pu8 += cchPrecision;
    795                                         off += cchPrecision;
     795                                        pu8 += cchWidth;
     796                                        off += cchWidth;
    796797                                    }
    797798                                    return cch;
     
    803804                                case 's':
    804805                                {
    805                                     if (cchWidth-- > 0)
     806                                    if (cchPrecision-- > 0)
    806807                                    {
    807808                                        size_t cch = RTStrFormat(pfnOutput, pvArgOutput, NULL, 0, "%02x", *pu8++);
    808                                         for (; cchWidth > 0; cchWidth--, pu8++)
     809                                        for (; cchPrecision > 0; cchPrecision--, pu8++)
    809810                                            cch += RTStrFormat(pfnOutput, pvArgOutput, NULL, 0, " %02x", *pu8);
    810811                                        return cch;
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette