@@ -689,27 +689,28 @@ static int set_field( char* header,
689
689
const field_data * fd ) {
690
690
691
691
field_data w_fd = {.buffer = fd -> buffer , .type = table [ field ]};
692
+ uint8_t * buf8 = (uint8_t * )& w_fd .buffer ;
693
+ uint16_t * buf16 = (uint16_t * )& w_fd .buffer ;
694
+ uint32_t * buf32 = (uint32_t * )& w_fd .buffer ;
692
695
693
696
switch ( w_fd .type ) {
694
697
695
698
case SEGY_SIGNED_INTEGER_4_BYTE :
696
- w_fd .buffer = htobe32 ( (int32_t )w_fd .buffer );
697
- memcpy ( header + (field - 1 ), & (w_fd .buffer ), formatsize ( w_fd .type ));
699
+ case SEGY_UNSIGNED_INTEGER_4_BYTE :
700
+ * buf32 = htobe32 ( * buf32 );
701
+ memcpy ( header + (field - 1 ), buf32 , formatsize ( w_fd .type ));
698
702
return SEGY_OK ;
699
703
700
704
case SEGY_SIGNED_SHORT_2_BYTE :
701
- w_fd .buffer = htobe16 ( (int16_t )w_fd .buffer );
702
- memcpy ( header + (field - 1 ), & (w_fd .buffer ), formatsize ( w_fd .type ));
703
- return SEGY_OK ;
704
-
705
705
case SEGY_UNSIGNED_SHORT_2_BYTE :
706
- w_fd . buffer = htobe16 ( ( uint16_t ) w_fd . buffer );
707
- memcpy ( header + (field - 1 ), & ( w_fd . buffer ) , formatsize ( w_fd .type ));
706
+ * buf16 = htobe16 ( * buf16 );
707
+ memcpy ( header + (field - 1 ), buf16 , formatsize ( w_fd .type ));
708
708
return SEGY_OK ;
709
709
710
710
case SEGY_UNSIGNED_CHAR_1_BYTE :
711
- w_fd .buffer = (uint8_t ) w_fd .buffer ;
712
- memcpy ( header + (field - 1 ), & (w_fd .buffer ), formatsize ( w_fd .type ));
711
+ case SEGY_SIGNED_CHAR_1_BYTE :
712
+ * buf8 = (uint8_t ) * buf8 ;
713
+ memcpy ( header + (field - 1 ), buf8 , formatsize ( w_fd .type ));
713
714
return SEGY_OK ;
714
715
715
716
default :
0 commit comments