Fix for [#34089] Crash opening file containing translation node saved before rev54235
authorJeroen Bakker <j.bakker@atmind.nl>
Sun, 3 Feb 2013 15:38:06 +0000 (15:38 +0000)
committerJeroen Bakker <j.bakker@atmind.nl>
Sun, 3 Feb 2013 15:38:06 +0000 (15:38 +0000)
source/blender/blenloader/intern/readfile.c

index b2c5677..91d4480 100644 (file)
@@ -7342,6 +7342,17 @@ static void do_version_node_cleanup_dynamic_sockets_264(void *UNUSED(data), ID *
        }
 }
 
+static void do_version_node_fix_translate_wrapping(void *UNUSED(data), ID *UNUSED(id), bNodeTree *ntree)
+{
+    bNode *node;
+
+    for (node = ntree->nodes.first; node; node = node->next) {
+        if (node->type == CMP_NODE_TRANSLATE && node->storage == NULL) {
+            node->storage = MEM_callocN(sizeof(NodeTranslateData), "node translate data");
+        }
+    }
+}
+
 static void do_version_node_fix_internal_links_264(void *UNUSED(data), ID *UNUSED(id), bNodeTree *ntree)
 {
        bNode *node;
@@ -8716,6 +8727,17 @@ static void do_versions(FileData *fd, Library *lib, Main *main)
                }
        }
 
+    // add storage for compositor translate nodes when not existing
+    if (!MAIN_VERSION_ATLEAST(main, 265, 9)) {
+        bNodeTreeType *ntreetype;
+
+        ntreetype = ntreeGetType(NTREE_COMPOSIT);
+        if (ntreetype && ntreetype->foreach_nodetree)
+            ntreetype->foreach_nodetree(main, NULL, do_version_node_fix_translate_wrapping);
+    }
+
+
+
        // if (main->versionfile < 265 || (main->versionfile == 265 && main->subversionfile < 7)) {
 
        /* WATCH IT!!!: pointers from libdata have not been converted yet here! */