diff --git a/toolkit/components/alerts/test/test_alerts.html b/toolkit/components/alerts/test/test_alerts.html
index 3a034f42785c68a674e32b791b6bc1a54a30dff8..ebbfe7f2ed1d889a7f3767817da0242e348cc33a 100644
--- a/toolkit/components/alerts/test/test_alerts.html
+++ b/toolkit/components/alerts/test/test_alerts.html
@@ -33,6 +33,8 @@ const Ci = Components.interfaces;
 try {
   var notifier = Cc["@mozilla.org/alerts-service;1"].
                  getService(Ci.nsIAlertsService);
+  notifier.showAlertNotification(null, "Notification test", "Surprise! I'm here to test a notification without observer!",
+                                 false, "foobarcookie", null);
   notifier.showAlertNotification(null, "Notification test", "Surprise! I'm here to test notifications!",
                                  false, "foobarcookie", observer);
 
diff --git a/toolkit/system/gnome/nsAlertsIconListener.cpp b/toolkit/system/gnome/nsAlertsIconListener.cpp
index d67b6c995699d4c11ebec5d9f3580cdc45931ecb..8c5e0b973485cd78f97045eca46f6efbe4a4f17e 100644
--- a/toolkit/system/gnome/nsAlertsIconListener.cpp
+++ b/toolkit/system/gnome/nsAlertsIconListener.cpp
@@ -250,13 +250,17 @@ nsAlertsIconListener::StartRequest(const nsAString & aImageUrl)
 void
 nsAlertsIconListener::SendCallback()
 {
-  mAlertListener->Observe(NULL, "alertclickcallback", mAlertCookie.get());
+  if (mAlertListener) {
+    mAlertListener->Observe(NULL, "alertclickcallback", mAlertCookie.get());
+  }
 }
 
 void
 nsAlertsIconListener::SendClosed()
 {
-  mAlertListener->Observe(NULL, "alertfinished", mAlertCookie.get());
+  if (mAlertListener) {
+    mAlertListener->Observe(NULL, "alertfinished", mAlertCookie.get());
+  }
 }
 
 nsresult