ref: a080ae88c6c65503575da220cb131ddada107bf6
dir: /array.c/
#include <u.h>
#include <libc.h>
#include <bio.h>
#include "pdf.h"
/* 7.3.6 Array Objects */
Object *
pdfarray(Biobuf *b)
{
Object *o, *m;
Object **a;
int c, noel;
o = calloc(1, sizeof(*o));
o->type = Oarray;
Bgetc(b); /* throw away '[' */
for(noel = 0;;){
if((c = Bgetc(b)) < 0 || c == ']')
break;
if(noel){
werrstr("no ']'");
goto err;
}
Bungetc(b);
if((m = pdfobject(b)) == nil){
noel = 1;
continue;
}
if((a = realloc(o->array.e, (o->array.ne+1)*sizeof(Object*))) == nil){
freeobject(m);
goto err;
}
o->array.e = a;
a[o->array.ne++] = m;
}
if(c != ']'){
werrstr("no ']'");
goto err;
}
return o;
err:
werrstr("array: %r");
freeobject(o);
return nil;
}