Author: abrander
Date: 2009-08-06 13:01:46 +0200 (Thu, 06 Aug 2009)
New Revision: 2613

Modified:
   trunk/librawstudio/rs-filter.c
Log:
Added safeguard against double linking in rs_filter_set_previous().

Modified: trunk/librawstudio/rs-filter.c
===================================================================
--- trunk/librawstudio/rs-filter.c      2009-08-06 10:48:59 UTC (rev 2612)
+++ trunk/librawstudio/rs-filter.c      2009-08-06 11:01:46 UTC (rev 2613)
@@ -124,15 +124,20 @@
        g_assert(RS_IS_FILTER(filter));
        g_assert(RS_IS_FILTER(previous));
 
-       if (filter->previous && (filter->previous != previous))
+       /* We will only set the previous filter if it differs from current 
previous filter */
+       if (filter->previous != previous)
        {
-               filter->previous->next_filters = 
g_slist_remove(filter->previous->next_filters, filter);
-               g_object_unref(filter->previous);
+               if (filter->previous)
+               {
+                       /* If we already got a previous filter, clean up */
+                       filter->previous->next_filters = 
g_slist_remove(filter->previous->next_filters, filter);
+                       g_object_unref(filter->previous);
+               }
+               else
+                       filter->previous = g_object_ref(previous);
+
+               previous->next_filters = g_slist_append(previous->next_filters, 
filter);
        }
-
-       filter->previous = g_object_ref(previous);
-
-       previous->next_filters = g_slist_append(previous->next_filters, filter);
 }
 
 /**


_______________________________________________
Rawstudio-commit mailing list
[email protected]
http://rawstudio.org/cgi-bin/mailman/listinfo/rawstudio-commit

Reply via email to