aboutsummaryrefslogtreecommitdiffstats
path: root/chunk-format.c
diff options
context:
space:
mode:
Diffstat (limited to 'chunk-format.c')
-rw-r--r--chunk-format.c24
1 files changed, 20 insertions, 4 deletions
diff --git a/chunk-format.c b/chunk-format.c
index 140dfa0dcc..8d910e23f6 100644
--- a/chunk-format.c
+++ b/chunk-format.c
@@ -154,20 +154,36 @@ int read_table_of_contents(struct chunkfile *cf,
return 0;
}
+struct pair_chunk_data {
+ const unsigned char **p;
+ size_t *size;
+};
+
static int pair_chunk_fn(const unsigned char *chunk_start,
size_t chunk_size,
void *data)
{
- const unsigned char **p = data;
- *p = chunk_start;
+ struct pair_chunk_data *pcd = data;
+ *pcd->p = chunk_start;
+ *pcd->size = chunk_size;
return 0;
}
int pair_chunk(struct chunkfile *cf,
uint32_t chunk_id,
- const unsigned char **p)
+ const unsigned char **p,
+ size_t *size)
+{
+ struct pair_chunk_data pcd = { .p = p, .size = size };
+ return read_chunk(cf, chunk_id, pair_chunk_fn, &pcd);
+}
+
+int pair_chunk_unsafe(struct chunkfile *cf,
+ uint32_t chunk_id,
+ const unsigned char **p)
{
- return read_chunk(cf, chunk_id, pair_chunk_fn, p);
+ size_t dummy;
+ return pair_chunk(cf, chunk_id, p, &dummy);
}
int read_chunk(struct chunkfile *cf,