Be safe: check for existence of the event, before doing anything with
it.
Code from henrylyne @ LiveJournal, packaged for Dreamwidth by <user
name="denise">, with some suggested changes by <user name="kareila">
diffs (47 lines):
diff -r 8c60dc737e7e -r 67156ed04d1e cgi-bin/LJ/NotificationInbox.pm
--- a/cgi-bin/LJ/NotificationInbox.pm Fri Oct 23 07:40:19 2009 -0500
+++ b/cgi-bin/LJ/NotificationInbox.pm Sat Oct 24 17:45:04 2009 +0000
@@ -71,7 +71,7 @@ sub all_items {
sub all_items {
my $self = shift;
- return grep { $_->event->class ne "LJ::Event::UserMessageSent" }
$self->items;
+ return grep { $_->event && $_->event->class ne
"LJ::Event::UserMessageSent" } $self->items;
}
# returns a list of friend-related notificationitems
@@ -268,7 +268,7 @@ sub instantiate_comment_singletons {
# instantiate all the comment singletons so that they will all be
# loaded efficiently later as soon as preload_rows is called on
# the first comment object
- my @comment_items = grep { $_->event->class eq
'LJ::Event::JournalNewComment' } $self->items;
+ my @comment_items = grep { $_->event && $_->event->class eq
'LJ::Event::JournalNewComment' } $self->items;
my @comment_events = map { $_->event } @comment_items;
# instantiate singletons
LJ::Comment->new($_->event_journal, jtalkid => $_->jtalkid) foreach
@comment_events;
@@ -282,7 +282,7 @@ sub instantiate_message_singletons {
# instantiate all the message singletons so that they will all be
# loaded efficiently later as soon as preload_rows is called on
# the first message object
- my @message_items = grep { $_->event->class eq
'LJ::Event::UserMessageRecvd' } $self->items;
+ my @message_items = grep { $_->event && $_->event->class eq
'LJ::Event::UserMessageRecvd' } $self->items;
my @message_events = map { $_->event } @message_items;
# instantiate singletons
LJ::Message->load({msgid => $_->arg1, journalid => $_->u->{userid}})
foreach @message_events;
@@ -644,14 +644,14 @@ sub subset_unread_count {
my ($self, @subset) = @_;
my %subset_events = map { "LJ::Event::" . $_ => 1 } @subset;
- my @events = grep { $subset_events{$_->event->class} && $_->unread }
$self->items;
+ my @events = grep { $_->event && $subset_events{$_->event->class} &&
$_->unread } $self->items;
return scalar @events;
}
sub all_event_count {
my $self = shift;
- my @events = grep { $_->event->class ne 'LJ::Event::UserMessageSent' &&
$_->unread } $self->items;
+ my @events = grep { $_->event && $_->event->class ne
'LJ::Event::UserMessageSent' && $_->unread } $self->items;
return scalar @events;
}
_______________________________________________
dw-changelog mailing list
[email protected]
http://lists.dwscoalition.org/mailman/listinfo/dw-changelog