| ☞ | Program
Repair Shop ![]() |
52 |
I saved my favorite method for last:
38 sub delete_observer {
39 my ( $item, @observers_to_remove ) = @_;
40 unless ( ref $O{ $item } eq 'ARRAY' ) {
41 return 0;
42 }
43 my %ok_observers = map { $_ => 1 } @{ $O{ $item } };
44 foreach my $observer_to_remove ( @observers_to_remove ) {
47 my $removed = delete $ok_observers{ $observer_to_remove };
52 }
53 $O{ $item } = [ keys %ok_observers ];
54 return scalar keys %ok_observers;
55 }
It's my favorite because it doesn't work
Suppose there are two observers, G1 and G2
Suppose you delete G2
Now %ok_observers contains G1 only
Then G1 is put back into the observers list:
53 $O{ $item } = [ keys %ok_observers ];
Oops
But wait! What about the test suite?
Oops
I have some other complaints about the test suite...
| ☞ | ![]() |
☞ |