diff options
Diffstat (limited to 'girepository/gitypelib.c')
-rw-r--r-- | girepository/gitypelib.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/girepository/gitypelib.c b/girepository/gitypelib.c index 8883496e..41b54fd8 100644 --- a/girepository/gitypelib.c +++ b/girepository/gitypelib.c @@ -1773,10 +1773,17 @@ validate_object_blob (ValidateContext *ctx, push_context (ctx, get_string_nofail (typelib, blob->name)); - for (i = 0; i < blob->n_fields; i++, offset2 += sizeof (FieldBlob)) + for (i = 0; i < blob->n_fields; i++) { + FieldBlob *blob = (FieldBlob*) &typelib->data[offset2]; + if (!validate_field_blob (ctx, offset2, error)) return FALSE; + + offset2 += sizeof (FieldBlob); + /* Special case fields which are callbacks. */ + if (blob->has_embedded_type) + offset2 += sizeof (CallbackBlob); } for (i = 0; i < blob->n_properties; i++, offset2 += sizeof (PropertyBlob)) |