[qt/qt/qtquick3d-assimp]: Summary of bulk changes made
KDE Git Services - Bulk Change <[email protected]>
| Newsgroups | gmane.comp.kde.cvs |
|---|---|
| Message-ID | <[email protected]> |
Git repository change summary for qt/qt/qtquick3d-assimp Pushed by mirror-service into branch 'upstream/master'. Changed from a939f2479513a4d92060f2348909886b67d548aa to bd301ee4d128cec5bb11e16b266f4f9bcb6a8d58 Acknowledgement was received that this change introduces only existing code that has been pushed to another public open source repository. This change contains the following new commits: Git commit bd301ee4d128cec5bb11e16b266f4f9bcb6a8d58 by GitHub (on behalf of alb3e3) on 29/07/2026 at 11:37.. Fix double-free copying meshes with sparse or empty UV/color channels (fixes #6620) (#6751) * Add regression test for aliased mesh channels in SceneCombiner::Copy Copying a mesh with a populated UV/color channel that is either not the first channel or belongs to a mesh reporting zero vertices must give the copy its own buffers. On master the copy aliases the source arrays, so destroying both double-frees them (assimp/assimp#6620). The test asserts the pointers differ; it also trips AddressSanitizer without the fix. Assisted-by: Claude Code (Claude Opus 5) * Fix double-free when copying meshes with sparse or empty UV/color channels SceneCombiner::Copy(aiMesh) flat-copies the mesh and then reallocates each array so the copy owns its own storage. UV and color channels were reallocated with 'while (HasTextureCoords(n))' / 'while (HasVertexColors(n))'. aiMesh::HasTextureCoords(n) returns false once mTextureCoords[n] is null *or* mNumVertices == 0, so the loop stopped at the first empty channel and skipped every channel of a zero-vertex mesh. Those channels kept the flat-copied pointer into the source mesh, and because the destructor frees every non-null channel of all AI_MAX_NUMBER_OF_* slots, they were freed twice (assimp/assimp#6620). A PLY imported with aiProcess_JoinIdenticalVertices reaches exactly this state (mNumVertices == 0 with mTextureCoords[0] still allocated), so importing it and passing the scene to Exporter::ExportToBlob double-frees. Reallocate every populated UV and color channel unconditionally, matching what the destructor frees. Assisted-by: Claude Code (Claude Opus 5) * Fix indentation and structure in SceneCombiner.cpp * Refactor logging and null checks in SceneCombiner Updated logging messages to use ASSIMP_LOG_ERROR for error cases and improved null pointer checks for prefix parameters. * Update SceneCombiner.cpp --------- Co-authored-by: Kim Kulling <[email protected]> https://invent.kde.org/qt/qt/qtquick3d-assimp/-/commit/bd301ee4d128cec5bb11e16b266f4f9bcb6a8d58