Skip to content
Snippets Groups Projects
Commit f10cd90b authored by Oleg Hahm's avatar Oleg Hahm
Browse files

Merge pull request #3447 from OlegHahm/fix_unsigned_char_in_od

od: signedness and constantness of input parameter
parents 85ab42dd 94596cdd
No related branches found
No related tags found
No related merge requests found
......@@ -136,7 +136,7 @@ extern "C" {
* @param[in] flags Flags as defined in @ref od_flags_address and
* @ref od_flags_bytes
*/
void od(void *data, size_t data_len, uint8_t width, uint16_t flags);
void od(const void *data, size_t data_len, uint8_t width, uint16_t flags);
/**
* @brief Dumps memory stored at *data* up to *data_len* in octal, decimal, or
......@@ -148,7 +148,7 @@ void od(void *data, size_t data_len, uint8_t width, uint16_t flags);
* @param[in] width Number of bytes per line. If *width* is 0,
* @ref OD_WIDTH_DEFAULT is assumed as a default value.
*/
static inline void od_hex_dump(void *data, size_t data_len, uint8_t width)
static inline void od_hex_dump(const void *data, size_t data_len, uint8_t width)
{
od(data, data_len, width, OD_FLAGS_ADDRESS_HEX | OD_FLAGS_BYTES_HEX | OD_FLAGS_LENGTH_1);
}
......
......@@ -178,13 +178,13 @@ static inline void _bytes_format(char *format, uint16_t flags)
}
}
static void _print_date(void *data, size_t offset, char *format, uint8_t length,
static void _print_date(const void *data, size_t offset, char *format, uint8_t length,
uint16_t flags)
{
switch (length) {
case 1:
if (flags & OD_FLAGS_BYTES_CHAR) {
switch (((char *)data)[offset]) {
switch (((signed char *)data)[offset]) {
case '\0':
printf(" \\0");
return;
......@@ -218,11 +218,11 @@ static void _print_date(void *data, size_t offset, char *format, uint8_t length,
return;
default:
if (((char *)data)[offset] < 0) {
if (((signed char *)data)[offset] < 0) {
printf(" %03o", ((unsigned char *)data)[offset]);
return;
}
else if (((char *)data)[offset] < 32) {
else if (((signed char *)data)[offset] < 32) {
printf(" %03o", ((char *)data)[offset]);
return;
}
......@@ -287,7 +287,7 @@ static int _log10(uint8_t a)
return ++res;
}
void od(void *data, size_t data_len, uint8_t width, uint16_t flags)
void od(const void *data, size_t data_len, uint8_t width, uint16_t flags)
{
char address_format[5];
uint8_t date_length = _length(flags);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment