diff options
author | Albert Astals Cid <aacid@kde.org> | 2011-05-07 11:10:11 +0100 |
---|---|---|
committer | Albert Astals Cid <aacid@kde.org> | 2011-05-07 11:10:11 +0100 |
commit | dab9cdf795d6caead555326958e86e844ace067b (patch) | |
tree | 897eaac3c1e121ccf33ee67bbd28068df441c401 | |
parent | 7b5d5716273f8e0071852b77af2aaf149e2c6640 (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.cc | 12 | ||||
-rw-r--r-- | poppler/Catalog.h | 2 |
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); |