mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-10-31 13:50:03 +00:00 
			
		
		
		
	am: Resolve truncation and sign conversion warnings in WriteContentData() (#5397)
We can adjust the API to allow std::size_t indices, which simplifies operating with standard container types. It also prevents truncation warnings from occurring in these cases as well.
This commit is contained in:
		
							parent
							
								
									353780e1c9
								
							
						
					
					
						commit
						902cc1eb49
					
				
					 6 changed files with 32 additions and 31 deletions
				
			
		|  | @ -206,10 +206,10 @@ u64 CIAContainer::GetMetadataOffset() const { | |||
|     return offset; | ||||
| } | ||||
| 
 | ||||
| u64 CIAContainer::GetContentOffset(u16 index) const { | ||||
| u64 CIAContainer::GetContentOffset(std::size_t index) const { | ||||
|     u64 offset = | ||||
|         Common::AlignUp(GetTitleMetadataOffset() + cia_header.tmd_size, CIA_SECTION_ALIGNMENT); | ||||
|     for (u16 i = 0; i < index; i++) { | ||||
|     for (std::size_t i = 0; i < index; i++) { | ||||
|         offset += GetContentSize(i); | ||||
|     } | ||||
|     return offset; | ||||
|  | @ -235,10 +235,11 @@ u64 CIAContainer::GetTotalContentSize() const { | |||
|     return cia_header.content_size; | ||||
| } | ||||
| 
 | ||||
| u64 CIAContainer::GetContentSize(u16 index) const { | ||||
| u64 CIAContainer::GetContentSize(std::size_t index) const { | ||||
|     // If the content doesn't exist in the CIA, it doesn't have a size.
 | ||||
|     if (!cia_header.isContentPresent(index)) | ||||
|     if (!cia_header.IsContentPresent(index)) { | ||||
|         return 0; | ||||
|     } | ||||
| 
 | ||||
|     return cia_tmd.GetContentSizeByIndex(index); | ||||
| } | ||||
|  |  | |||
|  | @ -58,14 +58,14 @@ public: | |||
|     u64 GetTicketOffset() const; | ||||
|     u64 GetTitleMetadataOffset() const; | ||||
|     u64 GetMetadataOffset() const; | ||||
|     u64 GetContentOffset(u16 index = 0) const; | ||||
|     u64 GetContentOffset(std::size_t index = 0) const; | ||||
| 
 | ||||
|     u32 GetCertificateSize() const; | ||||
|     u32 GetTicketSize() const; | ||||
|     u32 GetTitleMetadataSize() const; | ||||
|     u32 GetMetadataSize() const; | ||||
|     u64 GetTotalContentSize() const; | ||||
|     u64 GetContentSize(u16 index = 0) const; | ||||
|     u64 GetContentSize(std::size_t index = 0) const; | ||||
| 
 | ||||
|     void Print() const; | ||||
| 
 | ||||
|  | @ -81,11 +81,11 @@ private: | |||
|         u64_le content_size; | ||||
|         std::array<u8, CIA_CONTENT_BITS_SIZE> content_present; | ||||
| 
 | ||||
|         bool isContentPresent(u16 index) const { | ||||
|         bool IsContentPresent(std::size_t index) const { | ||||
|             // The content_present is a bit array which defines which content in the TMD
 | ||||
|             // is included in the CIA, so check the bit for this index and add if set.
 | ||||
|             // The bits in the content index are arranged w/ index 0 as the MSB, 7 as the LSB, etc.
 | ||||
|             return (content_present[index >> 3] & (0x80 >> (index & 7))); | ||||
|             return (content_present[index >> 3] & (0x80 >> (index & 7))) != 0; | ||||
|         } | ||||
|     }; | ||||
| 
 | ||||
|  |  | |||
|  | @ -165,19 +165,19 @@ u32 TitleMetadata::GetDLPContentID() const { | |||
|     return tmd_chunks[TMDContentIndex::DLP].id; | ||||
| } | ||||
| 
 | ||||
| u32 TitleMetadata::GetContentIDByIndex(u16 index) const { | ||||
| u32 TitleMetadata::GetContentIDByIndex(std::size_t index) const { | ||||
|     return tmd_chunks[index].id; | ||||
| } | ||||
| 
 | ||||
| u16 TitleMetadata::GetContentTypeByIndex(u16 index) const { | ||||
| u16 TitleMetadata::GetContentTypeByIndex(std::size_t index) const { | ||||
|     return tmd_chunks[index].type; | ||||
| } | ||||
| 
 | ||||
| u64 TitleMetadata::GetContentSizeByIndex(u16 index) const { | ||||
| u64 TitleMetadata::GetContentSizeByIndex(std::size_t index) const { | ||||
|     return tmd_chunks[index].size; | ||||
| } | ||||
| 
 | ||||
| std::array<u8, 16> TitleMetadata::GetContentCTRByIndex(u16 index) const { | ||||
| std::array<u8, 16> TitleMetadata::GetContentCTRByIndex(std::size_t index) const { | ||||
|     std::array<u8, 16> ctr{}; | ||||
|     std::memcpy(ctr.data(), &tmd_chunks[index].index, sizeof(u16)); | ||||
|     return ctr; | ||||
|  |  | |||
|  | @ -96,10 +96,10 @@ public: | |||
|     u32 GetBootContentID() const; | ||||
|     u32 GetManualContentID() const; | ||||
|     u32 GetDLPContentID() const; | ||||
|     u32 GetContentIDByIndex(u16 index) const; | ||||
|     u16 GetContentTypeByIndex(u16 index) const; | ||||
|     u64 GetContentSizeByIndex(u16 index) const; | ||||
|     std::array<u8, 16> GetContentCTRByIndex(u16 index) const; | ||||
|     u32 GetContentIDByIndex(std::size_t index) const; | ||||
|     u16 GetContentTypeByIndex(std::size_t index) const; | ||||
|     u64 GetContentSizeByIndex(std::size_t index) const; | ||||
|     std::array<u8, 16> GetContentCTRByIndex(std::size_t index) const; | ||||
| 
 | ||||
|     void SetTitleID(u64 title_id); | ||||
|     void SetTitleType(u32 type); | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue