From 74882fe188e647b57aadf9c7f9f823d70694ac2c Mon Sep 17 00:00:00 2001 From: Vadim Pisarevsky Date: Wed, 30 May 2012 11:29:22 +0000 Subject: [PATCH] replaced "string FileStorage::release()" with 2 methods to preserve backward compatibility. --- modules/core/include/opencv2/core/core.hpp | 4 +++- modules/core/src/persistence.cpp | 20 +++++++++++++------- modules/core/test/test_io.cpp | 3 ++- 3 files changed, 18 insertions(+), 9 deletions(-) diff --git a/modules/core/include/opencv2/core/core.hpp b/modules/core/include/opencv2/core/core.hpp index ebb66a3cf7..41e6b72f91 100644 --- a/modules/core/include/opencv2/core/core.hpp +++ b/modules/core/include/opencv2/core/core.hpp @@ -3976,7 +3976,9 @@ public: //! returns true if the object is associated with currently opened file. CV_WRAP virtual bool isOpened() const; //! closes the file and releases all the memory buffers - CV_WRAP virtual string release(); + CV_WRAP virtual void release(); + //! closes the file, releases all the memory buffers and returns the text string + CV_WRAP_AS(releaseAndGetString) virtual void release(CV_OUT string& buf); //! returns the first element of the top-level mapping CV_WRAP FileNode getFirstTopLevelNode() const; diff --git a/modules/core/src/persistence.cpp b/modules/core/src/persistence.cpp index a02c1864ae..7d1d5865c6 100644 --- a/modules/core/src/persistence.cpp +++ b/modules/core/src/persistence.cpp @@ -5154,19 +5154,25 @@ bool FileStorage::isOpened() const return !fs.empty() && fs.obj->is_opened; } -string FileStorage::release() +void FileStorage::release() { - string buf; - - if( fs.obj && fs.obj->outbuf ) - icvClose(fs.obj, &buf); - fs.release(); structs.clear(); state = UNDEFINED; - return buf; } +void FileStorage::release(string& buf) +{ + if( fs.obj && fs.obj->outbuf ) + icvClose(fs.obj, &buf); + else + buf.clear(); + + fs.release(); + structs.clear(); + state = UNDEFINED; +} + FileNode FileStorage::root(int streamidx) const { return isOpened() ? FileNode(fs, cvGetRootFileNode(fs, streamidx)) : FileNode(); diff --git a/modules/core/test/test_io.cpp b/modules/core/test/test_io.cpp index a74a7fb7af..150bdd1cdd 100644 --- a/modules/core/test/test_io.cpp +++ b/modules/core/test/test_io.cpp @@ -180,7 +180,8 @@ protected: fs.writeObj("test_graph",graph); CvGraph* graph2 = (CvGraph*)cvClone(graph); - string content = fs.release(); + string content; + fs.release(content); if(!fs.open(mem ? content : filename, FileStorage::READ + (mem ? FileStorage::MEMORY : 0))) { -- GitLab