From 15b855409a0ae7588236fe43f4aaa1d5d389b005 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Fri, 4 Jun 2010 13:58:19 +0100
Subject: [PATCH] Fix a long-suffering logging unit test failure, re-enable the
 test. This makes logs look less scary on Linux, in-line with other platforms.

---
 indra/llcommon/llerror.cpp            | 10 ++++++++++
 indra/llcommon/llerror.h              |  2 +-
 indra/llcommon/tests/llerror_test.cpp |  9 ---------
 3 files changed, 11 insertions(+), 10 deletions(-)

diff --git a/indra/llcommon/llerror.cpp b/indra/llcommon/llerror.cpp
index 41ff5849f45..d06d6baf85d 100644
--- a/indra/llcommon/llerror.cpp
+++ b/indra/llcommon/llerror.cpp
@@ -954,7 +954,12 @@ namespace LLError
 		
 		std::string class_name = className(site.mClassInfo);
 		std::string function_name = functionName(site.mFunction);
+#if LL_LINUX
+		// gross, but typeid comparison seems to always fail here with gcc4.1
+		if (0 != strcmp(site.mClassInfo.name(), typeid(NoClassInfo).name()))
+#else
 		if (site.mClassInfo != typeid(NoClassInfo))
+#endif // LL_LINUX
 		{
 			function_name = class_name + "::" + function_name;
 		}
@@ -1079,7 +1084,12 @@ namespace LLError
 	#if LL_WINDOWS
 		// DevStudio: __FUNCTION__ already includes the full class name
 	#else
+                #if LL_LINUX
+		// gross, but typeid comparison seems to always fail here with gcc4.1
+		if (0 != strcmp(site.mClassInfo.name(), typeid(NoClassInfo).name()))
+                #else
 		if (site.mClassInfo != typeid(NoClassInfo))
+                #endif // LL_LINUX
 		{
 			prefix << className(site.mClassInfo) << "::";
 		}
diff --git a/indra/llcommon/llerror.h b/indra/llcommon/llerror.h
index 09812de2b80..e64ee5e0814 100644
--- a/indra/llcommon/llerror.h
+++ b/indra/llcommon/llerror.h
@@ -179,7 +179,7 @@ namespace LLError
 		{ return s; }
 		// used to indicate the end of a message
 		
-	class NoClassInfo { };
+	class LL_COMMON_API NoClassInfo { };
 		// used to indicate no class info known for logging
 
    //LLCallStacks keeps track of call stacks and output the call stacks to log file
diff --git a/indra/llcommon/tests/llerror_test.cpp b/indra/llcommon/tests/llerror_test.cpp
index 6785d0cf170..1558df231a9 100644
--- a/indra/llcommon/tests/llerror_test.cpp
+++ b/indra/llcommon/tests/llerror_test.cpp
@@ -545,15 +545,6 @@ namespace tut
 		// output order
 	void ErrorTestObject::test<10>()
 	{
-#if LL_LINUX
-        skip("Fails on Linux, see comments");
-// on Linux:
-// [error, 10] fail: 'order is time type location function message: expected
-// '1947-07-08T03:04:05Z INFO: llcommon/tests/llerror_test.cpp(268) :
-// writeReturningLocationAndFunction: apple' actual
-// '1947-07-08T03:04:05Z INFO: llcommon/tests/llerror_test.cpp(268) :
-// LLError::NoClassInfo::writeReturningLocationAndFunction: apple''
-#endif
 		LLError::setPrintLocation(true);
 		LLError::setTimeFunction(roswell);
 		mRecorder.setWantsTime(true);
-- 
GitLab