poppler/Object.cc | 8 ++------ poppler/Object.h | 9 +++++---- 2 files changed, 7 insertions(+), 10 deletions(-)
New commits: commit f2223e12e401648a24d559ba766759b8afac2d5e Author: Adam Reichold <[email protected]> Date: Sun Sep 2 10:43:18 2018 +0200 Assert validity of Object contents where at least constructor or destructor seem to assume it to catch errors as early as possible when using debug builds. diff --git a/poppler/Object.cc b/poppler/Object.cc index dc08b83f..9112d316 100644 --- a/poppler/Object.cc +++ b/poppler/Object.cc @@ -91,6 +91,7 @@ Object Object::copy() const { obj.string = string->copy(); break; case objName: + case objCmd: obj.cString = copyString(cString); break; case objArray: @@ -102,9 +103,6 @@ Object Object::copy() const { case objStream: stream->incRef(); break; - case objCmd: - obj.cString = copyString(cString); - break; default: break; } @@ -124,6 +122,7 @@ void Object::free() { delete string; break; case objName: + case objCmd: gfree(cString); break; case objArray: @@ -141,9 +140,6 @@ void Object::free() { delete stream; } break; - case objCmd: - gfree(cString); - break; default: break; } diff --git a/poppler/Object.h b/poppler/Object.h index 15168214..5d11aec9 100644 --- a/poppler/Object.h +++ b/poppler/Object.h @@ -37,6 +37,7 @@ #pragma interface #endif +#include <cassert> #include <set> #include <stdio.h> #include <string.h> @@ -156,15 +157,15 @@ public: explicit Object(GooString *stringA) { constructObj(objString); string = stringA; } Object(ObjType typeA, const char *stringA) - { constructObj(typeA); cString = copyString(stringA); } + { assert(typeA == objName || typeA == objCmd); assert(stringA); constructObj(typeA); cString = copyString(stringA); } explicit Object(long long int64gA) { constructObj(objInt64); int64g = int64gA; } explicit Object(Array *arrayA) - { constructObj(objArray); array = arrayA; } + { assert(arrayA); constructObj(objArray); array = arrayA; } explicit Object(Dict *dictA) - { constructObj(objDict); dict = dictA; } + { assert(dictA); constructObj(objDict); dict = dictA; } explicit Object(Stream *streamA) - { constructObj(objStream); stream = streamA; } + { assert(streamA); constructObj(objStream); stream = streamA; } Object(int numA, int genA) { constructObj(objRef); ref.num = numA; ref.gen = genA; } template<typename T> Object(T) = delete; _______________________________________________ poppler mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/poppler
