--- poppler/Catalog.cc 2009-10-25 09:52:58.000000000 +0000 +++ poppler/Catalog_new.cc 2009-10-25 09:51:37.000000000 +0000 @@ -99,9 +99,11 @@ if (!obj.isNum()) { error(-1, "Page count in top-level pages object is wrong type (%s)", obj.getTypeName()); - goto err3; + pagesSize = numPages0 = 0; + } + else{ + pagesSize = numPages0 = (int)obj.getNum(); } - pagesSize = numPages0 = (int)obj.getNum(); obj.free(); pages = (Page **)gmallocn(pagesSize, sizeof(Page *)); pageRefs = (Ref *)gmallocn(pagesSize, sizeof(Ref)); @@ -216,8 +218,6 @@ catDict.free(); return; - err3: - obj.free(); err2: pagesDict.free(); err1: @@ -292,7 +292,7 @@ if (!kids.isArray()) { error(-1, "Kids object (page %d) is wrong type (%s)", start+1, kids.getTypeName()); - goto err1; + return start; } for (i = 0; i < kids.arrayGetLength(); ++i) { kids.arrayGetNF(i, &kidRef);