@@ -74,6 +74,7 @@ extern "C" {
7474#ifndef UINT8_MAX
7575#include <stdint.h>
7676#endif
77+ #include <string.h> /* memcpy */
7778
7879#include "pattributes.h" /* fallthrough */
7980
@@ -382,45 +383,49 @@ static int print_uint64(uint64_t n, char *p)
382383static int print_int8 (int8_t n , char * p )
383384{
384385 int sign ;
386+ uint8_t v = (uint8_t )n ;
385387
386388 if ((sign = n < 0 )) {
387389 * p ++ = '-' ;
388- n = - n ;
390+ v = ( uint8_t ) - v ;
389391 }
390- return print_uint8 (( uint8_t ) n , p ) + sign ;
392+ return print_uint8 (v , p ) + sign ;
391393}
392394
393395static int print_int16 (int16_t n , char * p )
394396{
395397 int sign ;
398+ uint16_t v = (uint16_t )n ;
396399
397400 if ((sign = n < 0 )) {
398401 * p ++ = '-' ;
399- n = - n ;
402+ v = ( uint16_t ) - v ;
400403 }
401- return print_uint16 (( uint16_t ) n , p ) + sign ;
404+ return print_uint16 (v , p ) + sign ;
402405}
403406
404407static int print_int32 (int32_t n , char * p )
405408{
406409 int sign ;
410+ uint32_t v = (uint32_t )n ;
407411
408412 if ((sign = n < 0 )) {
409413 * p ++ = '-' ;
410- n = - n ;
414+ v = ( uint32_t ) - v ;
411415 }
412- return print_uint32 (( uint32_t ) n , p ) + sign ;
416+ return print_uint32 (v , p ) + sign ;
413417}
414418
415419static int print_int64 (int64_t n , char * p )
416420{
417421 int sign ;
422+ uint64_t v = (uint64_t )n ;
418423
419424 if ((sign = n < 0 )) {
420425 * p ++ = '-' ;
421- n = - n ;
426+ v = ( uint64_t ) - v ;
422427 }
423- return print_uint64 (( uint64_t ) n , p ) + sign ;
428+ return print_uint64 (v , p ) + sign ;
424429}
425430
426431#define __define_print_int_simple (NAME , UNAME , T , UT ) \
0 commit comments