From 46e7bd31cd6a16ebce71007200bc5776caf12168 Mon Sep 17 00:00:00 2001
From: Brad Kittenbrink <brad@lindenlab.com>
Date: Wed, 27 May 2009 17:41:57 +0000
Subject: [PATCH] Fix for mac build errors following r121524 commit for
 DEV-27646.

---
 indra/llcommon/llqueuedthread.h |  2 --
 indra/llcommon/llsdserialize.h  | 10 ++++++++--
 2 files changed, 8 insertions(+), 4 deletions(-)

diff --git a/indra/llcommon/llqueuedthread.h b/indra/llcommon/llqueuedthread.h
index b3cde22b409..8bfa5632a16 100644
--- a/indra/llcommon/llqueuedthread.h
+++ b/indra/llcommon/llqueuedthread.h
@@ -148,8 +148,6 @@ class LL_COMMON_API LLQueuedThread : public LLThread
 		}
 	};
 
-    template class LL_COMMON_API std::set<QueuedRequest*, queued_request_less>;
-
 
 	//------------------------------------------------------------------------
 	
diff --git a/indra/llcommon/llsdserialize.h b/indra/llcommon/llsdserialize.h
index 4b32f0afcda..2f2b292189b 100644
--- a/indra/llcommon/llsdserialize.h
+++ b/indra/llcommon/llsdserialize.h
@@ -638,9 +638,14 @@ class LL_COMMON_API LLSDBinaryFormatter : public LLSDFormatter
  *	params << "[{'version':i1}," << LLSDOStreamer<LLSDNotationFormatter>(sd)
  *    << "]";
  *  </code>
+ *
+ * *NOTE - formerly this class inherited from its template parameter Formatter,
+ * but all insnatiations passed in LLRefCount subclasses.  This conflicted with
+ * the auto allocation intended for this class template (demonstrated in the
+ * example above).  -brad
  */
 template <class Formatter>
-class LLSDOStreamer : public Formatter
+class LLSDOStreamer
 {
 public:
 	/** 
@@ -661,7 +666,8 @@ class LLSDOStreamer : public Formatter
 		std::ostream& str,
 		const LLSDOStreamer<Formatter>& formatter)
 	{
-		formatter.format(formatter.mSD, str, formatter.mOptions);
+		LLPointer<Formatter> f = new Formatter;
+		f->format(formatter.mSD, str, formatter.mOptions);
 		return str;
 	}
 
-- 
GitLab