ref: df075d407417a84a3dacf44044fd0907b295f39e
dir: /eval.c/
#include <u.h>
#include <libc.h>
#include <bio.h>
#include "pdf.h"
Object *
pdfeval(Object **oo)
{
Object *d, *o;
Xref *x;
int i;
if(oo == nil || *oo == nil)
return &null;
o = *oo;
if(o->type != Oindir)
return o;
for(i = 0; i < o->pdf->nxref && o->pdf->xref[i].id != o->indir.id; i++);
if(i >= o->pdf->nxref){
werrstr("no object id %d in xref", o->indir.id);
return &null;
}
x = &o->pdf->xref[i];
if(Bseek(o->pdf->bio, x->off, 0) != x->off){
werrstr("xref seek failed");
return &null;
}
if((d = pdfobj(o->pdf, o->pdf->bio)) == nil)
return &null;
*oo = d;
pdfobjfree(o);
return d;
}