external/libgltf/UnpackedTarball_libgltf.mk | 1 external/libgltf/patches/free_file_buffers.patch | 58 +++++++++++++++++++++++ 2 files changed, 59 insertions(+)
New commits: commit 26df4ae661dcbb125df6791dd8cc6da543548b46 Author: Zolnai Tamás <tamas.zol...@collabora.com> Date: Mon May 26 21:48:40 2014 +0200 patching libgltf: stop a huge memory leak It is ambiguos where we should free file buffers because they are allocated by the caller code, but since gltfHandle is deallocated inside libgltf and libgltf has a gltf_renderer_release method for deallocation it seems better to free them by libgltf. Change-Id: If3d9abed0514128c13cde8c1967ea80c4d27bf59 diff --git a/external/libgltf/UnpackedTarball_libgltf.mk b/external/libgltf/UnpackedTarball_libgltf.mk index d8434b6..acfbab0 100644 --- a/external/libgltf/UnpackedTarball_libgltf.mk +++ b/external/libgltf/UnpackedTarball_libgltf.mk @@ -18,6 +18,7 @@ $(eval $(call gb_UnpackedTarball_set_patchlevel,libgltf,1)) $(eval $(call gb_UnpackedTarball_add_patches,libgltf,\ external/libgltf/patches/include_path_glew.patch \ external/libgltf/patches/include_path_freetype.patch \ + external/libgltf/patches/free_file_buffers.patch \ )) # vim: set noet sw=4 ts=4: diff --git a/external/libgltf/patches/free_file_buffers.patch b/external/libgltf/patches/free_file_buffers.patch new file mode 100644 index 0000000..9f92da3 --- /dev/null +++ b/external/libgltf/patches/free_file_buffers.patch @@ -0,0 +1,58 @@ +diff -ur libgltf.org/src/LoadScene.cpp libgltf/src/LoadScene.cpp +--- libgltf.org/src/LoadScene.cpp 2014-05-26 21:46:51.986986538 +0200 ++++ libgltf/src/LoadScene.cpp 2014-05-26 21:47:28.206985004 +0200 +@@ -127,7 +127,7 @@ + return gHandle; + } + +-bool Parser::releaseFileName() ++bool Parser::releaseFiles() + { + glTFHandle* gHandle = pScene->getGltfHandle(); + for (int i = (int)gHandle->size - 1 ; i >= 0 ; i--) +@@ -137,6 +137,7 @@ + free(gHandle->files[i].filename); + gHandle->files[i].filename = NULL; + } ++ delete [] gHandle->files[i].buffer; + } + + if (gHandle->files != NULL) +diff -ur libgltf.org/src/LoadScene.h libgltf/src/LoadScene.h +--- libgltf.org/src/LoadScene.h 2014-05-26 21:46:51.986986538 +0200 ++++ libgltf/src/LoadScene.h 2014-05-26 21:47:33.170984793 +0200 +@@ -26,7 +26,7 @@ + { + public: + glTFHandle* getFileNameInJson(const std::string& jsonFile); +- bool releaseFileName(); ++ bool releaseFiles(); + int parseScene(Scene* pscene); + bool parseJsonFile(); + void setJsonInfo(const std::string& sbuffer); +@@ -81,4 +81,4 @@ + bool is_json_in_buffer; + }; + +-#endif +\ No newline at end of file ++#endif +diff -ur libgltf.org/src/RenderScene.cpp libgltf/src/RenderScene.cpp +--- libgltf.org/src/RenderScene.cpp 2014-05-26 21:46:51.986986538 +0200 ++++ libgltf/src/RenderScene.cpp 2014-05-26 21:47:39.358984531 +0200 +@@ -1426,7 +1426,7 @@ + + void RenderScene::releaseRender() + { +- mLoadJson.releaseFileName(); ++ mLoadJson.releaseFiles(); + fbo.releaseFbo(); + return; + } +@@ -1543,4 +1543,4 @@ + int RenderScene::isAnimPlay() + { + return this->mAnimationPlay ? 1 : 0; +-} +\ No newline at end of file ++}
_______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits