Revision: 26171
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=26171
Author:   theeth
Date:     2010-01-21 22:01:18 +0100 (Thu, 21 Jan 2010)

Log Message:
-----------
Fix bug in IDP_ReplaceGroupInGroup (it would sometimes add the same property 
twice).

Also simplify some other loops.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/intern/idprop.c

Modified: trunk/blender/source/blender/blenkernel/intern/idprop.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/idprop.c     2010-01-21 
20:45:45 UTC (rev 26170)
+++ trunk/blender/source/blender/blenkernel/intern/idprop.c     2010-01-21 
21:01:18 UTC (rev 26171)
@@ -392,13 +392,12 @@
 {
        IDProperty *loop, *prop;
        for (prop=src->data.group.first; prop; prop=prop->next) {
-               IDProperty *copy = IDP_CopyProperty(prop);
-
                for (loop=dest->data.group.first; loop; loop=loop->next) {
                        if (BSTR_EQ(loop->name, prop->name)) {
-                               if (loop->next) 
BLI_insertlinkbefore(&dest->data.group, loop->next, copy);
-                               else BLI_addtail(&dest->data.group, copy);
+                               IDProperty *copy = IDP_CopyProperty(prop);
 
+                               BLI_insertlink(&dest->data.group, loop, copy);
+
                                BLI_remlink(&dest->data.group, loop);
                                IDP_FreeProperty(loop);
                                MEM_freeN(loop);
@@ -406,8 +405,12 @@
                        }
                }
 
-               dest->len++;
-               BLI_addtail(&dest->data.group, copy);
+               /* only add at end if not added yet */
+               if (loop == NULL) {
+                       IDProperty *copy = IDP_CopyProperty(prop);
+                       dest->len++;
+                       BLI_addtail(&dest->data.group, copy);
+               }
        }
 }
 /*
@@ -419,8 +422,7 @@
        IDProperty *loop;
        for (loop=group->data.group.first; loop; loop=loop->next) {
                if (BSTR_EQ(loop->name, prop->name)) {
-                       if (loop->next) 
BLI_insertlinkbefore(&group->data.group, loop->next, prop);
-                       else BLI_addtail(&group->data.group, prop);
+                       BLI_insertlink(&group->data.group, loop, prop);
                        
                        BLI_remlink(&group->data.group, loop);
                        IDP_FreeProperty(loop);
@@ -513,14 +515,12 @@
   direct data.*/
 static void IDP_FreeGroup(IDProperty *prop)
 {
-       IDProperty *loop, *next;
-       for (loop=prop->data.group.first; loop; loop=next)
+       IDProperty *loop;
+       for (loop=prop->data.group.first; loop; loop=loop->next)
        {
-               next = loop->next;
-               BLI_remlink(&prop->data.group, loop);
                IDP_FreeProperty(loop);
-               MEM_freeN(loop);
        }
+       BLI_freelistN(&prop->data.group);
 }
 
 


_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to