X-Git-Url: http://git.asbjorn.it/?a=blobdiff_plain;f=pdf2swf%2Fxpdf%2FArray.cc;h=a6c6db19231e72fccd533a5381d8d67425a7f181;hb=c7432833fe3a6469d63fad135151a92e12877b94;hp=fbdde49da9089e6d8181d87cf46f1d0138fa7167;hpb=b9ddd4a2ed601bc01ddacc69d2522687a93a94ce;p=swftools.git diff --git a/pdf2swf/xpdf/Array.cc b/pdf2swf/xpdf/Array.cc index fbdde49..a6c6db1 100644 --- a/pdf2swf/xpdf/Array.cc +++ b/pdf2swf/xpdf/Array.cc @@ -2,15 +2,17 @@ // // Array.cc // -// Copyright 1996-2002 Glyph & Cog, LLC +// Copyright 1996-2003 Glyph & Cog, LLC // //======================================================================== -#ifdef __GNUC__ +#include + +#ifdef USE_GCC_PRAGMAS #pragma implementation #endif -#include +#include #include #include "gmem.h" #include "Object.h" @@ -36,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; @@ -45,9 +51,23 @@ void Array::add(Object *elem) { } Object *Array::get(int i, Object *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); }