Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrecht Van Lommel <brechtvanlommel@pandora.be>2008-11-02 03:25:39 +0300
committerBrecht Van Lommel <brechtvanlommel@pandora.be>2008-11-02 03:25:39 +0300
commita4f8f06479a962e52240ec4c7e3dd28b0213d691 (patch)
treebc53353cae95849c24533bce1c90e624c60504ff /source/blender/blenkernel
parent68f50e0c6b147d9603d151d99f5085c09c0ce039 (diff)
Fix for two proxy + undo related crashes:
* When making a proxy, the lib linked IPO driver was also changed to point to the proxy object, and after undo this local proxy object was replaced so the pointer became invalid. In fact it is not needed at all to change this because the IPO code maps the pointer to the local proxy object already. * Undoing the make proxy operation would crash because the proxy_from pointer in the library linked object would still point to the removed object. Now it clears all these pointers before undo, because on each undo memory file read they will be set again anyway.
Diffstat (limited to 'source/blender/blenkernel')
-rw-r--r--source/blender/blenkernel/intern/object.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c
index 77c891ee82e..a25afeafaef 100644
--- a/source/blender/blenkernel/intern/object.c
+++ b/source/blender/blenkernel/intern/object.c
@@ -1163,7 +1163,10 @@ static void copy_object_pose(Object *obn, Object *ob)
ListBase targets = {NULL, NULL};
bConstraintTarget *ct;
- if(con->ipo) {
+ /* note that we can't change lib linked ipo blocks. for making
+ * proxies this still works correct however because the object
+ * is changed to object->proxy_from when evaluating the driver. */
+ if(con->ipo && !con->ipo->id.lib) {
IpoCurve *icu;
for(icu= con->ipo->curve.first; icu; icu= icu->next) {
if(icu->driver && icu->driver->ob==ob)