diff --git a/indra/llwindow/llwindowmacosx-objc.h b/indra/llwindow/llwindowmacosx-objc.h
index f02052ca6adae6ee8b13ec3acce9de9ebf99c800..e6e8f27f5345197748254a76da0c79921a8a7feb 100755
--- a/indra/llwindow/llwindowmacosx-objc.h
+++ b/indra/llwindow/llwindowmacosx-objc.h
@@ -53,6 +53,7 @@ bool runMainLoop();
 void initMainLoop();
 void cleanupViewer();
 void handleUrl(const char* url);
+void dispatchUrl(std::string url);
 
 /* Defined in llwindowmacosx-objc.mm: */
 int createNSApp(int argc, const char **argv);
diff --git a/indra/newview/llappviewermacosx.cpp b/indra/newview/llappviewermacosx.cpp
index 56154a2de38686e982c01fb7b3f23e30a9aa8c2b..09227806fdff59e642fe15a2f1d598f26a2bb694 100755
--- a/indra/newview/llappviewermacosx.cpp
+++ b/indra/newview/llappviewermacosx.cpp
@@ -62,9 +62,10 @@ namespace
 	// They are not used immediately by the app.
 	int gArgC;
 	char** gArgV;
-	LLAppViewerMacOSX* gViewerAppPtr;
+	LLAppViewerMacOSX* gViewerAppPtr = NULL;
 
     void (*gOldTerminateHandler)() = NULL;
+    std::string gHandleSLURL;
 }
 
 static void exceptionTerminateHandler()
@@ -107,7 +108,11 @@ bool initViewer()
 	{
 		LL_WARNS() << "Application init failed." << LL_ENDL;
 	}
-
+    else if (!gHandleSLURL.empty())
+    {
+        dispatchUrl(gHandleSLURL);
+        gHandleSLURL = "";
+    }
 	return ok;
 }
 
@@ -393,22 +398,31 @@ bool LLAppViewerMacOSX::getMasterSystemAudioMute()
 
 void handleUrl(const char* url_utf8)
 {
-    if (url_utf8)
+    if (url_utf8 && gViewerAppPtr)
     {
-        std::string url = url_utf8;
-	    // Safari 3.2 silently mangles secondlife:///app/ URLs into
-	    // secondlife:/app/ (only one leading slash).
-	    // Fix them up to meet the URL specification. JC
-	    const std::string prefix = "secondlife:/app/";
-	    std::string test_prefix = url.substr(0, prefix.length());
-	    LLStringUtil::toLower(test_prefix);
-	    if (test_prefix == prefix)
-	    {
-		    url.replace(0, prefix.length(), "secondlife:///app/");
-	    }
-		
-	    LLMediaCtrl* web = NULL;
-    	const bool trusted_browser = false;
-	    LLURLDispatcher::dispatch(url, "", web, trusted_browser);
+        gHandleSLURL = "";
+        dispatchUrl(url_utf8);
     }
+    else if (url_utf8)
+    {
+        gHandleSLURL = url_utf8;
+    }
+}
+
+void dispatchUrl(std::string url)
+{
+    // Safari 3.2 silently mangles secondlife:///app/ URLs into
+    // secondlife:/app/ (only one leading slash).
+    // Fix them up to meet the URL specification. JC
+    const std::string prefix = "secondlife:/app/";
+    std::string test_prefix = url.substr(0, prefix.length());
+    LLStringUtil::toLower(test_prefix);
+    if (test_prefix == prefix)
+    {
+        url.replace(0, prefix.length(), "secondlife:///app/");
+    }
+    
+    LLMediaCtrl* web = NULL;
+    const bool trusted_browser = false;
+    LLURLDispatcher::dispatch(url, "", web, trusted_browser);
 }