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