diff options
author | Oliver Sander <oliver.sander@tu-dresden.de> | 2020-01-27 16:24:54 +0100 |
---|---|---|
committer | Albert Astals Cid <tsdgeos@yahoo.es> | 2020-02-23 16:47:00 +0000 |
commit | 06a658708d73b4e2d0bcb9f5572be9b2754368eb (patch) | |
tree | 2570bbd41ef0c95c7d3ed1d4fdff068cb973f284 | |
parent | 5d9a9c85bc27f7375a57f6c84913c8e0adcc38d1 (diff) |
Use a std::string value in LinkNamed
-rw-r--r-- | glib/poppler-action.cc | 4 | ||||
-rw-r--r-- | poppler/Link.cc | 11 | ||||
-rw-r--r-- | poppler/Link.h | 9 | ||||
-rw-r--r-- | qt5/src/poppler-page.cc | 26 |
4 files changed, 21 insertions, 29 deletions
diff --git a/glib/poppler-action.cc b/glib/poppler-action.cc index cbd78d85..e6be5b9b 100644 --- a/glib/poppler-action.cc +++ b/glib/poppler-action.cc @@ -416,9 +416,7 @@ static void build_named (PopplerAction *action, const LinkNamed *link) { - const gchar *name; - - name = link->getName ()->c_str (); + const gchar* name = link->getName ().c_str (); if (name != nullptr) action->named.named_dest = g_strdup (name); } diff --git a/poppler/Link.cc b/poppler/Link.cc index cd5ca00a..cfce4d36 100644 --- a/poppler/Link.cc +++ b/poppler/Link.cc @@ -609,15 +609,10 @@ LinkURI::~LinkURI() { //------------------------------------------------------------------------ LinkNamed::LinkNamed(const Object *nameObj) { - name = nullptr; + hasNameFlag = false; if (nameObj->isName()) { - name = new GooString(nameObj->getName()); - } -} - -LinkNamed::~LinkNamed() { - if (name) { - delete name; + name = (nameObj->getName()) ? nameObj->getName() : ""; + hasNameFlag = true; } } diff --git a/poppler/Link.h b/poppler/Link.h index 1e1bfd88..aaaf09c1 100644 --- a/poppler/Link.h +++ b/poppler/Link.h @@ -278,16 +278,15 @@ public: // Build a LinkNamed given the action name. LinkNamed(const Object *nameObj); - ~LinkNamed() override; - - bool isOk() const override { return name != nullptr; } + bool isOk() const override { return hasNameFlag; } LinkActionKind getKind() const override { return actionNamed; } - const GooString *getName() const { return name; } + const std::string& getName() const { return name; } private: - GooString *name; + std::string name; + bool hasNameFlag; }; diff --git a/qt5/src/poppler-page.cc b/qt5/src/poppler-page.cc index 39753b7e..25731146 100644 --- a/qt5/src/poppler-page.cc +++ b/qt5/src/poppler-page.cc @@ -236,30 +236,30 @@ Link* PageData::convertLinkActionToLink(::LinkAction * a, DocumentData *parentDo case actionNamed: { - const char * name = ((LinkNamed *)a)->getName()->c_str(); - if ( !strcmp( name, "NextPage" ) ) + const std::string& name = ((LinkNamed *)a)->getName(); + if ( name == "NextPage" ) popplerLink = new LinkAction( linkArea, LinkAction::PageNext ); - else if ( !strcmp( name, "PrevPage" ) ) + else if ( name == "PrevPage" ) popplerLink = new LinkAction( linkArea, LinkAction::PagePrev ); - else if ( !strcmp( name, "FirstPage" ) ) + else if ( name == "FirstPage" ) popplerLink = new LinkAction( linkArea, LinkAction::PageFirst ); - else if ( !strcmp( name, "LastPage" ) ) + else if ( name == "LastPage" ) popplerLink = new LinkAction( linkArea, LinkAction::PageLast ); - else if ( !strcmp( name, "GoBack" ) ) + else if ( name == "GoBack" ) popplerLink = new LinkAction( linkArea, LinkAction::HistoryBack ); - else if ( !strcmp( name, "GoForward" ) ) + else if ( name == "GoForward" ) popplerLink = new LinkAction( linkArea, LinkAction::HistoryForward ); - else if ( !strcmp( name, "Quit" ) ) + else if ( name == "Quit" ) popplerLink = new LinkAction( linkArea, LinkAction::Quit ); - else if ( !strcmp( name, "GoToPage" ) ) + else if ( name == "GoToPage" ) popplerLink = new LinkAction( linkArea, LinkAction::GoToPage ); - else if ( !strcmp( name, "Find" ) ) + else if ( name == "Find" ) popplerLink = new LinkAction( linkArea, LinkAction::Find ); - else if ( !strcmp( name, "FullScreen" ) ) + else if ( name == "FullScreen" ) popplerLink = new LinkAction( linkArea, LinkAction::Presentation ); - else if ( !strcmp( name, "Print" ) ) + else if ( name == "Print" ) popplerLink = new LinkAction( linkArea, LinkAction::Print ); - else if ( !strcmp( name, "Close" ) ) + else if ( name == "Close" ) { // acroread closes the document always, doesnt care whether // its presentation mode or not |