@@ -42,6 +42,7 @@ typedef struct {
4242 uint32_t first_sector ;
4343 uint32_t last_sector ;
4444 uint32_t flags_and_permissions ;
45+ bool has_id ;
4546 uint64_t partition_id ;
4647 bool has_name ;
4748 char name [PARTITION_NAME_MAX + 1 ];
@@ -95,8 +96,10 @@ bool read_next_partition(pico_partition_table_t *pt, pico_partition_t *p) {
9596 p -> first_sector = PART_LOC_FIRST (location );
9697 p -> last_sector = PART_LOC_LAST (location );
9798 p -> flags_and_permissions = pt -> table [pos ++ ];
99+ p -> has_name = p -> flags_and_permissions & PICOBIN_PARTITION_FLAGS_HAS_NAME_BITS ;
100+ p -> has_id = p -> flags_and_permissions & PICOBIN_PARTITION_FLAGS_HAS_ID_BITS ;
98101
99- if (p -> flags_and_permissions & PICOBIN_PARTITION_FLAGS_HAS_ID_BITS ) {
102+ if (p -> has_id ) {
100103 uint32_t id_low = pt -> table [pos ++ ];
101104 uint32_t id_high = pt -> table [pos ++ ];
102105 p -> partition_id = ((uint64_t )id_high << 32 ) | id_low ;
@@ -107,7 +110,6 @@ bool read_next_partition(pico_partition_table_t *pt, pico_partition_t *p) {
107110
108111 p -> extra_family_id_count = (p -> flags_and_permissions & PICOBIN_PARTITION_FLAGS_ACCEPTS_NUM_EXTRA_FAMILIES_BITS )
109112 >> PICOBIN_PARTITION_FLAGS_ACCEPTS_NUM_EXTRA_FAMILIES_LSB ;
110- p -> has_name = p -> flags_and_permissions & PICOBIN_PARTITION_FLAGS_HAS_NAME_BITS ;
111113 if (p -> extra_family_id_count | p -> has_name ) {
112114 // Read variable length fields
113115 uint32_t extra_family_ids_and_name [PARTITION_EXTRA_FAMILY_ID_MAX + (((PARTITION_NAME_MAX + 1 ) / sizeof (uint32_t )) + 1 )];
@@ -183,10 +185,10 @@ int main() {
183185 (p .flags_and_permissions & PICOBIN_PARTITION_PERMISSION_NSBOOT_W_BITS ? "w" : "" ),
184186 (p .flags_and_permissions & PICOBIN_PARTITION_PERMISSION_NS_R_BITS ? "r" : "" ),
185187 (p .flags_and_permissions & PICOBIN_PARTITION_PERMISSION_NS_W_BITS ? "w" : "" ));
186- if (p .flags_and_permissions & PICOBIN_PARTITION_FLAGS_HAS_ID_BITS ) {
188+ if (p .has_id ) {
187189 printf (", id=%016llx" , p .partition_id );
188190 }
189- if (p .flags_and_permissions & PICOBIN_PARTITION_FLAGS_HAS_NAME_BITS ) {
191+ if (p .has_name ) {
190192 printf (", \"%s\"" , p .name );
191193 }
192194
0 commit comments