[Libreoffice-commits] core.git: include/tools sw/source tools/qa tools/source

Michael Stahl mstahl at redhat.com
Fri Sep 26 07:44:19 PDT 2014


 include/tools/urlobj.hxx           |    4 +++-
 sw/source/filter/html/htmlgrin.cxx |    3 +--
 tools/qa/cppunit/test_urlobj.cxx   |   14 +++++++-------
 tools/source/fsys/urlobj.cxx       |    8 +++++---
 4 files changed, 16 insertions(+), 13 deletions(-)

New commits:
commit ea2d767d4475ac3399fdfa59a4d0e2fbc38d1aa9
Author: Michael Stahl <mstahl at redhat.com>
Date:   Fri Sep 26 15:35:09 2014 +0200

    tools: change INetURLObject::getData to return std::unique_ptr
    
    Life-cycle becomes a lot more obvious this way.
    
    Change-Id: I1ca99607f609a2223011c40447ad1cd9ca5ccaa5

diff --git a/include/tools/urlobj.hxx b/include/tools/urlobj.hxx
index aee3aea..9610aab 100644
--- a/include/tools/urlobj.hxx
+++ b/include/tools/urlobj.hxx
@@ -26,6 +26,8 @@
 #include <rtl/textenc.h>
 #include <sal/types.h>
 
+#include <memory>
+
 class SvMemoryStream;
 
 namespace com { namespace sun { namespace star { namespace util {
@@ -854,7 +856,7 @@ public:
         const;
 
     // Data URLs:
-    SvMemoryStream* getData();
+    std::unique_ptr<SvMemoryStream> getData();
 
     // POP3 and URLs:
 
diff --git a/sw/source/filter/html/htmlgrin.cxx b/sw/source/filter/html/htmlgrin.cxx
index 0d834fe..83db824 100644
--- a/sw/source/filter/html/htmlgrin.cxx
+++ b/sw/source/filter/html/htmlgrin.cxx
@@ -698,12 +698,11 @@ IMAGE_SETEVENT:
     INetURLObject aGraphicURL( sGrfNm );
     if( aGraphicURL.GetProtocol() == INET_PROT_DATA )
     {
-        SvMemoryStream* pStream = aGraphicURL.getData();
+        std::unique_ptr<SvMemoryStream> const pStream(aGraphicURL.getData());
         if (pStream)
         {
             if (GRFILTER_OK == GraphicFilter::GetGraphicFilter().ImportGraphic(aGraphic, "", *pStream))
                 sGrfNm = "";
-            delete pStream;
         }
     }
     // sBaseURL is empty if the source is clipboard
diff --git a/tools/qa/cppunit/test_urlobj.cxx b/tools/qa/cppunit/test_urlobj.cxx
index 6cfca96..df866bc 100644
--- a/tools/qa/cppunit/test_urlobj.cxx
+++ b/tools/qa/cppunit/test_urlobj.cxx
@@ -246,7 +246,7 @@ namespace tools_urlobj
 
         void urlobjTest_data() {
             INetURLObject url;
-            SvMemoryStream * strm;
+            std::unique_ptr<SvMemoryStream> strm;
             unsigned char const * buf;
 
             url = INetURLObject("data:");
@@ -259,7 +259,7 @@ namespace tools_urlobj
             strm = url.getData();
             CPPUNIT_ASSERT(strm != 0);
             CPPUNIT_ASSERT_EQUAL(sal_uIntPtr(0), strm->GetSize());
-            delete strm;
+            strm.reset();
 
             url = INetURLObject("data:,,%C3%A4%90");
             CPPUNIT_ASSERT(!url.HasError());
@@ -271,7 +271,7 @@ namespace tools_urlobj
             CPPUNIT_ASSERT_EQUAL(0xC3, int(buf[1]));
             CPPUNIT_ASSERT_EQUAL(0xA4, int(buf[2]));
             CPPUNIT_ASSERT_EQUAL(0x90, int(buf[3]));
-            delete strm;
+            strm.reset();
 
             url = INetURLObject("data:base64,");
             //TODO: CPPUNIT_ASSERT(url.HasError());
@@ -283,14 +283,14 @@ namespace tools_urlobj
             strm = url.getData();
             CPPUNIT_ASSERT(strm != 0);
             CPPUNIT_ASSERT_EQUAL(sal_uIntPtr(0), strm->GetSize());
-            delete strm;
+            strm.reset();
 
             url = INetURLObject("data:;bAsE64,");
             CPPUNIT_ASSERT(!url.HasError());
             strm = url.getData();
             CPPUNIT_ASSERT(strm != 0);
             CPPUNIT_ASSERT_EQUAL(sal_uIntPtr(0), strm->GetSize());
-            delete strm;
+            strm.reset();
 
             url = INetURLObject("data:;base64,YWJjCg==");
             CPPUNIT_ASSERT(!url.HasError());
@@ -302,7 +302,7 @@ namespace tools_urlobj
             CPPUNIT_ASSERT_EQUAL(0x62, int(buf[1]));
             CPPUNIT_ASSERT_EQUAL(0x63, int(buf[2]));
             CPPUNIT_ASSERT_EQUAL(0x0A, int(buf[3]));
-            delete strm;
+            strm.reset();
 
             url = INetURLObject("data:;base64,YWJjCg=");
             CPPUNIT_ASSERT(!url.HasError());
@@ -324,7 +324,7 @@ namespace tools_urlobj
             CPPUNIT_ASSERT_EQUAL(0x51, int(buf[1]));
             CPPUNIT_ASSERT_EQUAL(0x3D, int(buf[2]));
             CPPUNIT_ASSERT_EQUAL(0x3D, int(buf[3]));
-            delete strm;
+            strm.reset();
 
             url = INetURLObject("http://example.com");
             CPPUNIT_ASSERT(!url.HasError());
diff --git a/tools/source/fsys/urlobj.cxx b/tools/source/fsys/urlobj.cxx
index 7e248a2..e8331e8 100644
--- a/tools/source/fsys/urlobj.cxx
+++ b/tools/source/fsys/urlobj.cxx
@@ -585,7 +585,9 @@ void INetURLObject::setInvalid()
 
 namespace {
 
-SvMemoryStream * memoryStream(void const * data, sal_Int32 length) {
+std::unique_ptr<SvMemoryStream> memoryStream(
+        void const * data, sal_Int32 length)
+{
     std::unique_ptr<char, boost::checked_array_deleter<char> > b(
         new char[length]);
     memcpy(b.get(), data, length);
@@ -593,12 +595,12 @@ SvMemoryStream * memoryStream(void const * data, sal_Int32 length) {
         new SvMemoryStream(b.get(), length, STREAM_READ));
     s->ObjectOwnsMemory(true);
     b.release();
-    return s.release();
+    return s;
 }
 
 }
 
-SvMemoryStream* INetURLObject::getData()
+std::unique_ptr<SvMemoryStream> INetURLObject::getData()
 {
     if( GetProtocol() != INET_PROT_DATA )
     {


More information about the Libreoffice-commits mailing list