Blenloader: add api function for accessing packedfile address map

This is needed to move direct_link_packedfile out of readfile.c for T76372.
This commit is contained in:
Jacques Lucke 2020-08-28 16:57:28 +02:00
parent 5086bdfe0b
commit 62e2d92aed
2 changed files with 11 additions and 3 deletions

View File

@ -177,9 +177,12 @@ bool BLO_write_is_undo(BlendWriter *writer);
*/
void *BLO_read_get_new_data_address(BlendDataReader *reader, const void *old_address);
void *BLO_read_get_new_packed_address(BlendDataReader *reader, const void *old_address);
#define BLO_read_data_address(reader, ptr_p) \
*((void **)ptr_p) = BLO_read_get_new_data_address((reader), *(ptr_p))
#define BLO_read_packed_address(reader, ptr_p) \
*((void **)ptr_p) = BLO_read_get_new_packed_address((reader), *(ptr_p))
typedef void (*BlendReadListFn)(BlendDataReader *reader, void *data);
void BLO_read_list_cb(BlendDataReader *reader, struct ListBase *list, BlendReadListFn callback);

View File

@ -2631,12 +2631,12 @@ static void direct_link_paint_curve(BlendDataReader *reader, PaintCurve *pc)
/** \name Read PackedFile
* \{ */
static PackedFile *direct_link_packedfile(BlendDataReader *reader, PackedFile *oldpf)
static PackedFile *direct_link_packedfile(BlendDataReader *reader, PackedFile *pf)
{
PackedFile *pf = newpackedadr(reader->fd, oldpf);
BLO_read_packed_address(reader, &pf);
if (pf) {
pf->data = newpackedadr(reader->fd, pf->data);
BLO_read_packed_address(reader, &pf->data);
if (pf->data == NULL) {
/* We cannot allow a PackedFile with a NULL data field,
* the whole code assumes this is not possible. See T70315. */
@ -11089,6 +11089,11 @@ void *BLO_read_get_new_data_address(BlendDataReader *reader, const void *old_add
return newdataadr(reader->fd, old_address);
}
void *BLO_read_get_new_packed_address(BlendDataReader *reader, const void *old_address)
{
return newpackedadr(reader->fd, old_address);
}
ID *BLO_read_get_new_id_address(BlendLibReader *reader, Library *lib, ID *id)
{
return newlibadr(reader->fd, lib, id);