ref: 3c27f041321b91dbf2bfd0ab9e4865e03854cd68
dir: /array.c/
#include <u.h>
#include <libc.h>
#include <ctype.h>
#include "pdf.h"
Object *
pdfarray(char *p, char **e, int len)
{
	Object *o, *m;
	Object **a;
	o = nil;
	if(len < 3 || p[0] != '['){
		werrstr("invalid array");
		goto err;
	}
	p++;
	len--;
	o = calloc(1, sizeof(*o));
	o->type = Oarray;
	for(; len >= 1;){
		for(; len > 0 && isws(*p); p++, len--);
		if(len < 1){
			werrstr("too short");
			goto err;
		}
		if(p[0] == ']'){
			p++;
			break;
		}
		if((m = pdfobject(p, e, len)) == nil)
			goto err;
		len -= *e - p;
		p = *e;
		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;
	}
	*e = p;
	return o;
err:
	freeobject(o);
	return nil;
}