[Bf-blender-cvs] [829cf33] alembic: Use a stub factory when Alembic is disabled to avoid invalid pointer access.

Lukas Tönne noreply at git.blender.org
Thu Mar 26 13:55:13 CET 2015


Commit: 829cf337800f1c6865e69e66ce839507dae3a400
Author: Lukas Tönne
Date:   Mon Mar 23 18:11:28 2015 +0100
Branches: alembic
https://developer.blender.org/rB829cf337800f1c6865e69e66ce839507dae3a400

Use a stub factory when Alembic is disabled to avoid invalid pointer
access.

===================================================================

M	source/blender/pointcache/PTC_api.cpp

===================================================================

diff --git a/source/blender/pointcache/PTC_api.cpp b/source/blender/pointcache/PTC_api.cpp
index cc29eb3..08f7bb9 100644
--- a/source/blender/pointcache/PTC_api.cpp
+++ b/source/blender/pointcache/PTC_api.cpp
@@ -44,9 +44,40 @@ extern "C" {
 
 using namespace PTC;
 
+class StubFactory : public Factory {
+	const std::string &get_default_extension() { static std::string ext = ""; return ext; }
+	WriterArchive *open_writer_archive(Scene *scene, const std::string &name, ErrorHandler *error_handler) { return NULL; }
+	ReaderArchive *open_reader_archive(Scene *scene, const std::string &name, ErrorHandler *error_handler) { return NULL; }
+	Writer *create_writer_object(const std::string &name, Scene *scene, Object *ob) { return NULL; }
+	Reader *create_reader_object(const std::string &name, Object *ob) { return NULL; }
+	Writer *create_writer_group(const std::string &name, Group *group) { return NULL; }
+	Reader *create_reader_group(const std::string &name, Group *group) { return NULL; }
+	Writer *create_writer_particles(const std::string &name, Object *ob, ParticleSystem *psys) { return NULL; }
+	Reader *create_reader_particles(const std::string &name, Object *ob, ParticleSystem *psys) { return NULL; }
+	Writer *create_writer_hair_dynamics(const std::string &name, Object *ob, ParticleSystem *psys) { return NULL; }
+	Reader *create_reader_hair_dynamics(const std::string &name, Object *ob, ParticleSystem *psys) { return NULL; }
+	Writer *create_writer_particles_pathcache_parents(const std::string &name, Object *ob, ParticleSystem *psys) { return NULL; }
+	Reader *create_reader_particles_pathcache_parents(const std::string &name, Object *ob, ParticleSystem *psys) { return NULL; }
+	Writer *create_writer_particles_pathcache_children(const std::string &name, Object *ob, ParticleSystem *psys) { return NULL; }
+	Reader *create_reader_particles_pathcache_children(const std::string &name, Object *ob, ParticleSystem *psys) { return NULL; }
+	Writer *create_writer_cloth(const std::string &name, Object *ob, ClothModifierData *clmd) { return NULL; }
+	Reader *create_reader_cloth(const std::string &name, Object *ob, ClothModifierData *clmd) { return NULL; }
+	Writer *create_writer_derived_mesh(const std::string &name, Object *ob, DerivedMesh **dm_ptr) { return NULL; }
+	Reader *create_reader_derived_mesh(const std::string &name, Object *ob) { return NULL; }
+	Writer *create_writer_derived_final_realtime(const std::string &name, Object *ob) { return NULL; }
+	Writer *create_writer_derived_final_render(const std::string &name, Scene *scene, Object *ob, DerivedMesh **render_dm_ptr) { return NULL; }
+	Writer *create_writer_cache_modifier_realtime(const std::string &name, Object *ob, CacheModifierData *cmd) { return NULL; }
+	Writer *create_writer_cache_modifier_render(const std::string &name, Scene *scene, Object *ob, CacheModifierData *cmd) { return NULL; }
+	Writer *create_writer_dupligroup(const std::string &name, EvaluationContext *eval_ctx, Scene *scene, Group *group, CacheLibrary *cachelib) { return NULL; }
+	Reader *create_reader_duplicache(const std::string &name, Group *group, DupliCache *dupcache) { return NULL; }
+	Reader *create_reader_duplicache_object(const std::string &name, Object *ob, DupliObjectData *data) { return NULL; }
+};
+
 #ifndef WITH_PTC_ALEMBIC
 void PTC_alembic_init()
 {
+	static StubFactory stub_factory;
+	PTC::Factory::alembic = &stub_factory;
 }
 #endif




More information about the Bf-blender-cvs mailing list