summaryrefslogtreecommitdiff
path: root/Build/source/libs/poppler/poppler-src/poppler/Array.cc
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/libs/poppler/poppler-src/poppler/Array.cc')
-rw-r--r--Build/source/libs/poppler/poppler-src/poppler/Array.cc44
1 files changed, 21 insertions, 23 deletions
diff --git a/Build/source/libs/poppler/poppler-src/poppler/Array.cc b/Build/source/libs/poppler/poppler-src/poppler/Array.cc
index 230c3287683..c6de53ef03e 100644
--- a/Build/source/libs/poppler/poppler-src/poppler/Array.cc
+++ b/Build/source/libs/poppler/poppler-src/poppler/Array.cc
@@ -16,7 +16,8 @@
// Copyright (C) 2005 Kristian Høgsberg <krh@redhat.com>
// Copyright (C) 2012 Fabio D'Urso <fabiodurso@hotmail.it>
// Copyright (C) 2013 Thomas Freitag <Thomas.Freitag@alfa.de>
-// Copyright (C) 2013 Albert Astals Cid <aacid@kde.org>
+// Copyright (C) 2013, 2017 Albert Astals Cid <aacid@kde.org>
+// Copyright (C) 2017 Adrian Johnson <ajohnson@redneon.com>
//
// To see a description of the changes please see the Changelog file that
// came with your tarball or type make ChangeLog if you are building from git
@@ -35,7 +36,7 @@
#include "Object.h"
#include "Array.h"
-#if MULTITHREADED
+#ifdef MULTITHREADED
# define arrayLocker() MutexLocker locker(&mutex)
#else
# define arrayLocker()
@@ -49,7 +50,7 @@ Array::Array(XRef *xrefA) {
elems = NULL;
size = length = 0;
ref = 1;
-#if MULTITHREADED
+#ifdef MULTITHREADED
gInitMutex(&mutex);
#endif
}
@@ -60,19 +61,18 @@ Array::~Array() {
for (i = 0; i < length; ++i)
elems[i].free();
gfree(elems);
-#if MULTITHREADED
+#ifdef MULTITHREADED
gDestroyMutex(&mutex);
#endif
}
-Object *Array::copy(XRef *xrefA, Object *obj) {
+Object Array::copy(XRef *xrefA) const {
arrayLocker();
- obj->initArray(xrefA);
+ Array *a = new Array(xrefA);
for (int i = 0; i < length; ++i) {
- Object obj1;
- obj->arrayAdd(elems[i].copy(&obj1));
+ a->add(elems[i].copy());
}
- return obj;
+ return Object(a);
}
int Array::incRef() {
@@ -87,7 +87,7 @@ int Array::decRef() {
return ref;
}
-void Array::add(Object *elem) {
+void Array::add(Object &&elem) {
arrayLocker();
if (length == size) {
if (length == 0) {
@@ -97,7 +97,8 @@ void Array::add(Object *elem) {
}
elems = (Object *)greallocn(elems, size, sizeof(Object));
}
- elems[length] = *elem;
+ elems[length].initNullAfterMalloc();
+ elems[length] = std::move(elem);
++length;
}
@@ -114,39 +115,36 @@ void Array::remove(int i) {
memmove( elems + i, elems + i + 1, sizeof(elems[0]) * (length - i) );
}
-Object *Array::get(int i, Object *obj, int recursion) {
+Object Array::get(int i, int recursion) const {
if (i < 0 || i >= length) {
#ifdef DEBUG_MEM
abort();
#else
- return obj->initNull();
+ return Object(objNull);
#endif
}
- return elems[i].fetch(xref, obj, recursion);
+ return elems[i].fetch(xref, recursion);
}
-Object *Array::getNF(int i, Object *obj) {
+Object Array::getNF(int i) const {
if (i < 0 || i >= length) {
#ifdef DEBUG_MEM
abort();
#else
- return obj->initNull();
+ return Object(objNull);
#endif
}
- return elems[i].copy(obj);
+ return elems[i].copy();
}
-GBool Array::getString(int i, GooString *string)
+GBool Array::getString(int i, GooString *string) const
{
- Object obj;
-
- if (getNF(i, &obj)->isString()) {
+ Object obj = getNF(i);
+ if (obj.isString()) {
string->clear();
string->append(obj.getString());
- obj.free();
return gTrue;
} else {
- obj.free();
return gFalse;
}
}