[Bf-blender-cvs] [4b90830cac8] blender-v2.79-release: Alembic: Fix T52579: crash when replacing slightly different alembic files

Sybren A. Stüvel noreply at git.blender.org
Mon Sep 4 14:18:53 CEST 2017


Commit: 4b90830cac85761587e5cc596f653c97c1ada64c
Author: Sybren A. Stüvel
Date:   Tue Aug 29 16:58:13 2017 +0200
Branches: blender-v2.79-release
https://developer.blender.org/rB4b90830cac85761587e5cc596f653c97c1ada64c

Alembic: Fix T52579: crash when replacing slightly different alembic files

Apparently with Maya in a certain configuration, it's possible to have an
Alembic object without schema in the Alembic file. This is now handled
properly, instead of crashing on a null pointer.

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

M	source/blender/alembic/intern/abc_util.cc
M	source/blender/alembic/intern/alembic_capi.cc

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

diff --git a/source/blender/alembic/intern/abc_util.cc b/source/blender/alembic/intern/abc_util.cc
index 26eb7620fb1..24a508e8292 100644
--- a/source/blender/alembic/intern/abc_util.cc
+++ b/source/blender/alembic/intern/abc_util.cc
@@ -370,10 +370,10 @@ AbcObjectReader *create_reader(const Alembic::AbcGeom::IObject &object, ImportSe
 		reader = new AbcCurveReader(object, settings);
 	}
 	else {
-		std::cerr << "Alembic: unknown how to handle objects of schema "
+		std::cerr << "Alembic: unknown how to handle objects of schema '"
 		          << md.get("schemaObjTitle")
-		          << ", skipping object "
-		          << object.getFullName() << std::endl;
+		          << "', skipping object '"
+		          << object.getFullName() << "'" << std::endl;
 	}
 
 	return reader;
diff --git a/source/blender/alembic/intern/alembic_capi.cc b/source/blender/alembic/intern/alembic_capi.cc
index bee8e92e969..5503dcb1527 100644
--- a/source/blender/alembic/intern/alembic_capi.cc
+++ b/source/blender/alembic/intern/alembic_capi.cc
@@ -990,6 +990,10 @@ CacheReader *CacheReader_open_alembic_object(AbcArchiveHandle *handle, CacheRead
 
 	ImportSettings settings;
 	AbcObjectReader *abc_reader = create_reader(iobject, settings);
+	if (abc_reader == NULL) {
+		/* This object is not supported */
+		return NULL;
+	}
 	abc_reader->object(object);
 	abc_reader->incref();



More information about the Bf-blender-cvs mailing list