Alembic: don't call object.getFullName() multiple times.
authorSybren A. Stüvel <sybren@stuvel.eu>
Thu, 23 Feb 2017 09:16:37 +0000 (10:16 +0100)
committerSybren A. Stüvel <sybren@stuvel.eu>
Thu, 6 Apr 2017 14:04:31 +0000 (16:04 +0200)
source/blender/alembic/intern/alembic_capi.cc

index ada1f5baaa8892940e9b80311fafe83334489b3d..91e1c8f9736c26529bc835ae5b65fcf454f86525 100644 (file)
@@ -416,8 +416,10 @@ static bool visit_object(const IObject &object,
                          GHash *readers_map,
                          ImportSettings &settings)
 {
+       const char *full_name = object.getFullName().c_str();
+
        if (!object.valid()) {
-               std::cerr << "  - " << object.getFullName() << ": object is invalid, skipping it and all its children.\n";
+               std::cerr << "  - " << full_name << ": object is invalid, skipping it and all its children.\n";
                return false;
        }
 
@@ -513,15 +515,10 @@ static bool visit_object(const IObject &object,
 
                AlembicObjectPath *abc_path = static_cast<AlembicObjectPath *>(
                                                  MEM_callocN(sizeof(AlembicObjectPath), "AlembicObjectPath"));
-
-               BLI_strncpy(abc_path->path, object.getFullName().c_str(), PATH_MAX);
-
+               BLI_strncpy(abc_path->path, full_name, PATH_MAX);
                BLI_addtail(&settings.cache_file->object_paths, abc_path);
 
-               /* Cast to `void *` explicitly to avoid compiler errors because it
-                * is a `const char *` which the compiler cast to `const void *`
-                * instead of the expected `void *`. */
-               BLI_ghash_insert(readers_map, (void *)object.getFullName().c_str(), reader);
+               BLI_ghash_insert(readers_map, const_cast<char *>(full_name), reader);
        }
 
        return parent_is_part_of_this_object;