summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlbert Astals Cid <aacid@kde.org>2011-05-07 11:10:11 +0100
committerAlbert Astals Cid <aacid@kde.org>2011-05-07 11:10:11 +0100
commitdab9cdf795d6caead555326958e86e844ace067b (patch)
tree897eaac3c1e121ccf33ee67bbd28068df441c401
parent7b5d5716273f8e0071852b77af2aaf149e2c6640 (diff)
Do not free a shallow copy of an object we'll free later
Make sure we have our own copy we can free Fixes KDE BUG #268816
-rw-r--r--poppler/Catalog.cc12
-rw-r--r--poppler/Catalog.h2
2 files changed, 6 insertions, 8 deletions
diff --git a/poppler/Catalog.cc b/poppler/Catalog.cc
index 297cac5c..7decc729 100644
--- a/poppler/Catalog.cc
+++ b/poppler/Catalog.cc
@@ -14,7 +14,7 @@
// under GPL version 2 or later
//
// Copyright (C) 2005 Kristian Høgsberg <krh@redhat.com>
-// Copyright (C) 2005-2010 Albert Astals Cid <aacid@kde.org>
+// Copyright (C) 2005-2011 Albert Astals Cid <aacid@kde.org>
// Copyright (C) 2005 Jeff Muizelaar <jrmuizel@nit.ca>
// Copyright (C) 2005 Jonathan Blandford <jrb@redhat.com>
// Copyright (C) 2005 Marco Pesenti Gritti <mpg@redhat.com>
@@ -459,12 +459,10 @@ EmbFile *Catalog::embeddedFile(int i)
GooString *Catalog::getJS(int i)
{
- Object obj = getJSNameTree()->getValue(i);
- if (obj.isRef()) {
- Ref r = obj.getRef();
- obj.free();
- xref->fetch(r.num, r.gen, &obj);
- }
+ Object obj;
+ // getJSNameTree()->getValue(i) returns a shallow copy of the object so we
+ // do not need to free it
+ getJSNameTree()->getValue(i).fetch(xref, &obj);
if (!obj.isDict()) {
obj.free();
diff --git a/poppler/Catalog.h b/poppler/Catalog.h
index cea808c2..d534ab22 100644
--- a/poppler/Catalog.h
+++ b/poppler/Catalog.h
@@ -57,7 +57,7 @@ public:
void parse(Object *tree);
GBool lookup(GooString *name, Object *obj);
int numEntries() { return length; };
- // iterator accessor
+ // iterator accessor, note it returns a shallow copy, do not free the object
Object getValue(int i);
GooString *getName(int i);