@@ -112,6 +112,35 @@ test_make_slot()
112
112
util->check_result (result_stream, " foo(int 3) bar(float 3) foo(int 3) " );
113
113
}
114
114
115
+ void
116
+ test_clear_called_in_signal_handler ()
117
+ {
118
+ sigc::signal<void ()> sig;
119
+ sig.connect ([]() { result_stream << " , slot 1, " ; });
120
+ sig.connect ([&sig]() { sig.clear (); result_stream << " slot 2, " ; });
121
+ sig.connect ([]() { result_stream << " slot 3, " ; });
122
+ result_stream << sig.size ();
123
+ sig.emit ();
124
+ result_stream << sig.size ();
125
+ sig.emit ();
126
+ util->check_result (result_stream, " 3, slot 1, slot 2, 0" );
127
+ }
128
+
129
+ void
130
+ test_clear_called_outside_signal_handler ()
131
+ {
132
+ sigc::signal<void ()> sig;
133
+ sig.connect ([]() { result_stream << " , slot 1, " ; });
134
+ sig.connect ([]() { result_stream << " slot 2, " ; });
135
+ sig.connect ([]() { result_stream << " slot 3, " ; });
136
+ result_stream << sig.size ();
137
+ sig.emit ();
138
+ sig.clear ();
139
+ result_stream << sig.size ();
140
+ sig.emit ();
141
+ util->check_result (result_stream, " 3, slot 1, slot 2, slot 3, 0" );
142
+ }
143
+
115
144
} // end anonymous namespace
116
145
117
146
int
@@ -127,6 +156,8 @@ main(int argc, char* argv[])
127
156
test_auto_disconnection ();
128
157
test_reference ();
129
158
test_make_slot ();
159
+ test_clear_called_in_signal_handler ();
160
+ test_clear_called_outside_signal_handler ();
130
161
131
162
return util->get_result_and_delete_instance () ? EXIT_SUCCESS : EXIT_FAILURE;
132
163
}
0 commit comments