X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=pdf2swf%2Fxpdf%2FArray.cc;h=a6c6db19231e72fccd533a5381d8d67425a7f181;hb=c7432833fe3a6469d63fad135151a92e12877b94;hp=9681b6854cc981797ce7ab91ecb0b047c0244b71;hpb=fc554a43712b76d16b41ec77dd311b4a78b1ef6b;p=swftools.git diff --git a/pdf2swf/xpdf/Array.cc b/pdf2swf/xpdf/Array.cc index 9681b68..a6c6db1 100644 --- a/pdf2swf/xpdf/Array.cc +++ b/pdf2swf/xpdf/Array.cc @@ -2,14 +2,17 @@ // // Array.cc // -// Copyright 1996 Derek B. Noonburg +// Copyright 1996-2003 Glyph & Cog, LLC // //======================================================================== -#ifdef __GNUC__ +#include + +#ifdef USE_GCC_PRAGMAS #pragma implementation #endif +#include #include #include "gmem.h" #include "Object.h" @@ -19,7 +22,8 @@ // Array //------------------------------------------------------------------------ -Array::Array() { +Array::Array(XRef *xrefA) { + xref = xrefA; elems = NULL; size = length = 0; ref = 1; @@ -34,8 +38,12 @@ Array::~Array() { } void Array::add(Object *elem) { - if (length + 1 > size) { - size += 8; + if (length == size) { + if (length == 0) { + size = 8; + } else { + size *= 2; + } elems = (Object *)grealloc(elems, size * sizeof(Object)); } elems[length] = *elem; @@ -43,9 +51,23 @@ void Array::add(Object *elem) { } Object *Array::get(int i, Object *obj) { - return elems[i].fetch(obj); + if (i < 0 || i >= length) { +#ifdef DEBUG_MEM + abort(); +#else + return obj->initNull(); +#endif + } + return elems[i].fetch(xref, obj); } Object *Array::getNF(int i, Object *obj) { + if (i < 0 || i >= length) { +#ifdef DEBUG_MEM + abort(); +#else + return obj->initNull(); +#endif + } return elems[i].copy(obj); }