summaryrefslogtreecommitdiff
path: root/fitz/obj_parse.c
diff options
context:
space:
mode:
Diffstat (limited to 'fitz/obj_parse.c')
-rw-r--r--fitz/obj_parse.c36
1 files changed, 17 insertions, 19 deletions
diff --git a/fitz/obj_parse.c b/fitz/obj_parse.c
index 531137b1..cf7b29b9 100644
--- a/fitz/obj_parse.c
+++ b/fitz/obj_parse.c
@@ -3,6 +3,8 @@
struct vap { va_list ap; };
+static fz_error parseobj(fz_obj **obj, pdf_xref *xref, char **sp, struct vap *v);
+
static inline int iswhite(int ch)
{
return
@@ -30,8 +32,6 @@ static inline int isregular(int ch)
return !isdelim(ch) && !iswhite(ch) && ch != EOF;
}
-static fz_error parseobj(fz_obj **obj, char **sp, struct vap *v);
-
static inline int fromhex(char ch)
{
if (ch >= '0' && ch <= '9')
@@ -106,7 +106,7 @@ static fz_error parsenumber(fz_obj **obj, char **sp)
return fz_okay;
}
-static fz_error parsedict(fz_obj **obj, char **sp, struct vap *v)
+static fz_error parsedict(fz_obj **obj, pdf_xref *xref, char **sp, struct vap *v)
{
fz_error error = fz_okay;
fz_obj *dict = nil;
@@ -153,7 +153,7 @@ static fz_error parsedict(fz_obj **obj, char **sp, struct vap *v)
skipwhite(&s);
- error = parseobj(&val, &s, v);
+ error = parseobj(&val, xref, &s, v);
if (error)
{
error = fz_rethrow(error, "cannot parse value");
@@ -184,7 +184,7 @@ cleanup:
return error; /* already rethrown */
}
-static fz_error parsearray(fz_obj **obj, char **sp, struct vap *v)
+static fz_error parsearray(fz_obj **obj, pdf_xref *xref, char **sp, struct vap *v)
{
fz_error error;
fz_obj *a;
@@ -207,7 +207,7 @@ static fz_error parsearray(fz_obj **obj, char **sp, struct vap *v)
break;
}
- error = parseobj(&o, &s, v);
+ error = parseobj(&o, xref, &s, v);
if (error)
{
fz_dropobj(a);
@@ -336,11 +336,11 @@ static fz_error parsehexstring(fz_obj **obj, char **sp)
return fz_okay;
}
-static fz_error parseobj(fz_obj **obj, char **sp, struct vap *v)
+static fz_error parseobj(fz_obj **obj, pdf_xref *xref, char **sp, struct vap *v)
{
fz_error error;
char buf[32];
- int oid, gid, len;
+ int num, gen, len;
char *tmp;
char *s = *sp;
@@ -363,9 +363,9 @@ static fz_error parseobj(fz_obj **obj, char **sp, struct vap *v)
case 'f': error = fz_newreal(obj, (float)va_arg(v->ap, double)); break;
case 'n': error = fz_newname(obj, va_arg(v->ap, char*)); break;
case 'r':
- oid = va_arg(v->ap, int);
- gid = va_arg(v->ap, int);
- error = fz_newindirect(obj, oid, gid);
+ num = va_arg(v->ap, int);
+ gen = va_arg(v->ap, int);
+ error = fz_newindirect(obj, num, gen, xref);
break;
case 's':
tmp = va_arg(v->ap, char*);
@@ -405,7 +405,7 @@ static fz_error parseobj(fz_obj **obj, char **sp, struct vap *v)
{
if (s[1] == '<')
{
- error = parsedict(obj, &s, v);
+ error = parsedict(obj, xref, &s, v);
if (error)
error = fz_rethrow(error, "cannot parse dict");
}
@@ -419,7 +419,7 @@ static fz_error parseobj(fz_obj **obj, char **sp, struct vap *v)
else if (*s == '[')
{
- error = parsearray(obj, &s, v);
+ error = parsearray(obj, xref, &s, v);
if (error)
error = fz_rethrow(error, "cannot parse array");
}
@@ -464,8 +464,7 @@ static fz_error parseobj(fz_obj **obj, char **sp, struct vap *v)
return error; /* already rethrown */
}
-fz_error
-fz_packobj(fz_obj **op, char *fmt, ...)
+fz_error fz_packobj(fz_obj **op, pdf_xref *xref, char *fmt, ...)
{
fz_error error;
struct vap v;
@@ -474,7 +473,7 @@ fz_packobj(fz_obj **op, char *fmt, ...)
va_start(ap, fmt);
va_copy(v.ap, ap);
- error = parseobj(op, &fmt, &v);
+ error = parseobj(op, xref, &fmt, &v);
va_end(ap);
@@ -483,9 +482,8 @@ fz_packobj(fz_obj **op, char *fmt, ...)
return fz_okay;
}
-fz_error
-fz_parseobj(fz_obj **op, char *str)
+fz_error fz_parseobj(fz_obj **op, pdf_xref *xref, char *str)
{
- return parseobj(op, &str, nil);
+ return parseobj(op, xref, &str, nil);
}