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:
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user