Update glTF2Asset.inl

Move creation of vars to avoid useless creation in case of an error.
pull/1917/head
Kim Kulling 2018-04-26 14:24:00 +02:00 committed by GitHub
parent 972fffe70b
commit dd7d0943f6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 18 additions and 16 deletions

View File

@ -461,36 +461,38 @@ inline void Buffer::EncodedRegion_SetCurrent(const std::string& pID)
throw DeadlyImportError("GLTF: EncodedRegion with ID: \"" + pID + "\" not found."); throw DeadlyImportError("GLTF: EncodedRegion with ID: \"" + pID + "\" not found.");
} }
inline bool Buffer::ReplaceData(const size_t pBufferData_Offset, const size_t pBufferData_Count, const uint8_t* pReplace_Data, const size_t pReplace_Count) inline
bool Buffer::ReplaceData(const size_t pBufferData_Offset, const size_t pBufferData_Count, const uint8_t* pReplace_Data, const size_t pReplace_Count)
{ {
const size_t new_data_size = byteLength + pReplace_Count - pBufferData_Count;
uint8_t* new_data; if((pBufferData_Count == 0) || (pReplace_Count == 0) || (pReplace_Data == nullptr)) {
return false;
}
if((pBufferData_Count == 0) || (pReplace_Count == 0) || (pReplace_Data == nullptr)) return false; const size_t new_data_size = byteLength + pReplace_Count - pBufferData_Count;
uint8_t *new_data = new uint8_t[new_data_size];
new_data = new uint8_t[new_data_size];
// Copy data which place before replacing part. // Copy data which place before replacing part.
memcpy(new_data, mData.get(), pBufferData_Offset); ::memcpy(new_data, mData.get(), pBufferData_Offset);
// Copy new data. // Copy new data.
memcpy(&new_data[pBufferData_Offset], pReplace_Data, pReplace_Count); ::memcpy(&new_data[pBufferData_Offset], pReplace_Data, pReplace_Count);
// Copy data which place after replacing part. // Copy data which place after replacing part.
memcpy(&new_data[pBufferData_Offset + pReplace_Count], &mData.get()[pBufferData_Offset + pBufferData_Count], pBufferData_Offset); ::memcpy(&new_data[pBufferData_Offset + pReplace_Count], &mData.get()[pBufferData_Offset + pBufferData_Count], pBufferData_Offset);
// Apply new data // Apply new data
mData.reset(new_data, std::default_delete<uint8_t[]>()); mData.reset(new_data, std::default_delete<uint8_t[]>());
byteLength = new_data_size; byteLength = new_data_size;
return true; return true;
} }
inline bool Buffer::ReplaceData_joint(const size_t pBufferData_Offset, const size_t pBufferData_Count, const uint8_t* pReplace_Data, const size_t pReplace_Count)
inline
bool Buffer::ReplaceData_joint(const size_t pBufferData_Offset, const size_t pBufferData_Count, const uint8_t* pReplace_Data, const size_t pReplace_Count)
{ {
const size_t new_data_size = byteLength + pReplace_Count - pBufferData_Count; if((pBufferData_Count == 0) || (pReplace_Count == 0) || (pReplace_Data == nullptr)) {
return false;
}
uint8_t* new_data; const size_t new_data_size = byteLength + pReplace_Count - pBufferData_Count;
uint8_t* new_data = new uint8_t[new_data_size];
if((pBufferData_Count == 0) || (pReplace_Count == 0) || (pReplace_Data == nullptr)) return false;
new_data = new uint8_t[new_data_size];
// Copy data which place before replacing part. // Copy data which place before replacing part.
memcpy(new_data, mData.get(), pBufferData_Offset); memcpy(new_data, mData.get(), pBufferData_Offset);
// Copy new data. // Copy new data.