diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2011-09-22 21:52:21 +0400 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2011-09-22 21:52:21 +0400 |
commit | 2eb1339e3f53d83f960bf5c07341d91a806bbcc3 (patch) | |
tree | ba9482d80ee470a95e4482b77afb6d0bd4c11486 | |
parent | 799afc1aa4bff22a6aed21a1cfe7da9e55d18a10 (diff) |
Corrected fix for #28722: Segfault when reading volumetric clouds example
Looks like with current implementation voxeldata should always be created
for voxel textures. Remove recently added NULL check and allocate
voxel data when linking a texture.
-rw-r--r-- | source/blender/blenlib/intern/bpath.c | 2 | ||||
-rw-r--r-- | source/blender/blenloader/intern/readfile.c | 3 |
2 files changed, 4 insertions, 1 deletions
diff --git a/source/blender/blenlib/intern/bpath.c b/source/blender/blenlib/intern/bpath.c index 1c5aab7659d..654ade8955f 100644 --- a/source/blender/blenlib/intern/bpath.c +++ b/source/blender/blenlib/intern/bpath.c @@ -244,7 +244,7 @@ static struct Tex *tex_stepdata__internal(struct Tex *tex, const int step_next, tex= tex->id.next; while (tex) { - if (tex->type == TEX_VOXELDATA && tex->vd && TEX_VD_IS_SOURCE_PATH(tex->vd->file_format)) + if (tex->type == TEX_VOXELDATA && TEX_VD_IS_SOURCE_PATH(tex->vd->file_format)) break; /* image is not a image with a path, skip it */ tex= tex->id.next; diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index c736270533e..ecd3c9b5dad 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -3009,6 +3009,9 @@ static void direct_link_texture(FileData *fd, Tex *tex) if(tex->vd) { tex->vd->dataset = NULL; tex->vd->ok = 0; + } else { + if(tex->type == TEX_VOXELDATA) + tex->vd= MEM_callocN(sizeof(VoxelData), "direct_link_texture VoxelData"); } tex->nodetree= newdataadr(fd, tex->nodetree); |