diff options
author | Oliver Sander <oliver.sander@tu-dresden.de> | 2020-02-11 22:34:10 +0100 |
---|---|---|
committer | Albert Astals Cid <tsdgeos@yahoo.es> | 2020-02-29 10:13:45 +0000 |
commit | b3cfbbf2679618d0c32670090717a6e2f70faf9c (patch) | |
tree | 712a2401d1c9ad77240cb5da8ed481f75138398b | |
parent | a9ba550caaaf89d35f8206463e1fe0d4ecfaa161 (diff) |
Use std::unique_ptr for LinkGoto data members
This makes it clear that these pointers are owning.
It makes the code slightly shorter, too.
-rw-r--r-- | poppler/Link.cc | 60 | ||||
-rw-r--r-- | poppler/Link.h | 37 |
2 files changed, 26 insertions, 71 deletions
diff --git a/poppler/Link.cc b/poppler/Link.cc index 0bf57b3e..c9945ce8 100644 --- a/poppler/Link.cc +++ b/poppler/Link.cc @@ -425,21 +425,17 @@ LinkDest::LinkDest(const LinkDest *dest) { //------------------------------------------------------------------------ LinkGoTo::LinkGoTo(const Object *destObj) { - dest = nullptr; - namedDest = nullptr; - // named destination if (destObj->isName()) { - namedDest = new GooString(destObj->getName()); + namedDest = std::make_unique<GooString>(destObj->getName()); } else if (destObj->isString()) { - namedDest = destObj->getString()->copy(); + namedDest = std::unique_ptr<GooString>(destObj->getString()->copy()); // destination dictionary } else if (destObj->isArray()) { - dest = new LinkDest(destObj->getArray()); + dest = std::make_unique<LinkDest>(destObj->getArray()); if (!dest->isOk()) { - delete dest; - dest = nullptr; + dest.reset(); } // error @@ -448,40 +444,28 @@ LinkGoTo::LinkGoTo(const Object *destObj) { } } -LinkGoTo::~LinkGoTo() { - if (dest) - delete dest; - if (namedDest) - delete namedDest; -} - //------------------------------------------------------------------------ // LinkGoToR //------------------------------------------------------------------------ LinkGoToR::LinkGoToR(Object *fileSpecObj, Object *destObj) { - fileName = nullptr; - dest = nullptr; - namedDest = nullptr; - // get file name Object obj1 = getFileSpecNameForPlatform (fileSpecObj); if (obj1.isString()) { - fileName = obj1.getString()->copy(); + fileName = std::unique_ptr<GooString>(obj1.getString()->copy()); } // named destination if (destObj->isName()) { - namedDest = new GooString(destObj->getName()); + namedDest = std::make_unique<GooString>(destObj->getName()); } else if (destObj->isString()) { - namedDest = destObj->getString()->copy(); + namedDest = std::unique_ptr<GooString>(destObj->getString()->copy()); // destination dictionary } else if (destObj->isArray()) { - dest = new LinkDest(destObj->getArray()); + dest = std::make_unique<LinkDest>(destObj->getArray()); if (!dest->isOk()) { - delete dest; - dest = nullptr; + dest.reset(); } // error @@ -490,31 +474,18 @@ LinkGoToR::LinkGoToR(Object *fileSpecObj, Object *destObj) { } } -LinkGoToR::~LinkGoToR() { - if (fileName) - delete fileName; - if (dest) - delete dest; - if (namedDest) - delete namedDest; -} - - //------------------------------------------------------------------------ // LinkLaunch //------------------------------------------------------------------------ LinkLaunch::LinkLaunch(const Object *actionObj) { - fileName = nullptr; - params = nullptr; - if (actionObj->isDict()) { Object obj1 = actionObj->dictLookup("F"); if (!obj1.isNull()) { Object obj3 = getFileSpecNameForPlatform (&obj1); if (obj3.isString()) { - fileName = obj3.getString()->copy(); + fileName = std::unique_ptr<GooString>(obj3.getString()->copy()); } } else { #ifdef _WIN32 @@ -528,11 +499,11 @@ LinkLaunch::LinkLaunch(const Object *actionObj) { Object obj2 = obj1.dictLookup("F"); Object obj3 = getFileSpecNameForPlatform (&obj2); if (obj3.isString()) { - fileName = obj3.getString()->copy(); + fileName = std::unique_ptr<GooString>(obj3.getString()->copy()); } obj2 = obj1.dictLookup("P"); if (obj2.isString()) { - params = obj2.getString()->copy(); + params = std::unique_ptr<GooString>(obj2.getString()->copy()); } } else { error(errSyntaxWarning, -1, "Bad launch-type link action"); @@ -541,13 +512,6 @@ LinkLaunch::LinkLaunch(const Object *actionObj) { } } -LinkLaunch::~LinkLaunch() { - if (fileName) - delete fileName; - if (params) - delete params; -} - //------------------------------------------------------------------------ // LinkURI //------------------------------------------------------------------------ diff --git a/poppler/Link.h b/poppler/Link.h index b996f560..3aa5e0a8 100644 --- a/poppler/Link.h +++ b/poppler/Link.h @@ -164,22 +164,19 @@ public: // Build a LinkGoTo from a destination (dictionary, name, or string). LinkGoTo(const Object *destObj); - // Destructor. - ~LinkGoTo() override; - // Was the LinkGoTo created successfully? bool isOk() const override { return dest || namedDest; } // Accessors. LinkActionKind getKind() const override { return actionGoTo; } - const LinkDest *getDest() const { return dest; } - const GooString *getNamedDest() const { return namedDest; } + const LinkDest *getDest() const { return dest.get(); } + const GooString *getNamedDest() const { return namedDest.get(); } private: - LinkDest *dest; // regular destination (nullptr for remote + std::unique_ptr<LinkDest> dest; // regular destination (nullptr for remote // link with bad destination) - GooString *namedDest; // named destination (only one of dest and + std::unique_ptr<GooString> namedDest; // named destination (only one of dest and // and namedDest may be non-nullptr) }; @@ -194,24 +191,21 @@ public: // (dictionary, name, or string). LinkGoToR(Object *fileSpecObj, Object *destObj); - // Destructor. - ~LinkGoToR() override; - // Was the LinkGoToR created successfully? bool isOk() const override { return fileName && (dest || namedDest); } // Accessors. LinkActionKind getKind() const override { return actionGoToR; } - const GooString *getFileName() const { return fileName; } - const LinkDest *getDest() const { return dest; } - const GooString *getNamedDest() const { return namedDest; } + const GooString *getFileName() const { return fileName.get(); } + const LinkDest *getDest() const { return dest.get(); } + const GooString *getNamedDest() const { return namedDest.get(); } private: - GooString *fileName; // file name - LinkDest *dest; // regular destination (nullptr for remote + std::unique_ptr<GooString> fileName; // file name + std::unique_ptr<LinkDest> dest; // regular destination (nullptr for remote // link with bad destination) - GooString *namedDest; // named destination (only one of dest and + std::unique_ptr<GooString> namedDest; // named destination (only one of dest and // and namedDest may be non-nullptr) }; @@ -225,21 +219,18 @@ public: // Build a LinkLaunch from an action dictionary. LinkLaunch(const Object *actionObj); - // Destructor. - ~LinkLaunch() override; - // Was the LinkLaunch created successfully? bool isOk() const override { return fileName != nullptr; } // Accessors. LinkActionKind getKind() const override { return actionLaunch; } - const GooString *getFileName() const { return fileName; } - const GooString *getParams() const { return params; } + const GooString *getFileName() const { return fileName.get(); } + const GooString *getParams() const { return params.get(); } private: - GooString *fileName; // file name - GooString *params; // parameters + std::unique_ptr<GooString> fileName; // file name + std::unique_ptr<GooString> params; // parameters }; //------------------------------------------------------------------------ |