From fbc0e795b114ddbfb73cc62ce25a1e9a1cafacba Mon Sep 17 00:00:00 2001
From: Richard Linden <none@none>
Date: Tue, 27 Apr 2010 16:08:56 -0700
Subject: [PATCH] added empty param blocks to registered widgets that didn't
 have them made LLDefaultChildRegistry::Register errors actually crash the
 client...llerrs doesn't work in static initializers

---
 indra/llui/llfloater.h         | 4 ++++
 indra/llui/lluictrlfactory.cpp | 5 ++++-
 indra/newview/llchiclet.h      | 3 +++
 3 files changed, 11 insertions(+), 1 deletion(-)

diff --git a/indra/llui/llfloater.h b/indra/llui/llfloater.h
index 403723d9d8d..444711de81e 100644
--- a/indra/llui/llfloater.h
+++ b/indra/llui/llfloater.h
@@ -432,11 +432,15 @@ friend class LLMultiFloater;
 
 class LLFloaterView : public LLUICtrl
 {
+public:
+	struct Params : public LLInitParam::Block<Params, LLUICtrl::Params>{};
+
 protected:
 	LLFloaterView (const Params& p);
 	friend class LLUICtrlFactory;
 
 public:
+
 	/*virtual*/ void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE);
 	void reshapeFloater(S32 width, S32 height, BOOL called_from_parent, BOOL adjust_vertical);
 
diff --git a/indra/llui/lluictrlfactory.cpp b/indra/llui/lluictrlfactory.cpp
index 27237800d4b..930dadc377f 100644
--- a/indra/llui/lluictrlfactory.cpp
+++ b/indra/llui/lluictrlfactory.cpp
@@ -435,7 +435,10 @@ void LLUICtrlFactory::registerWidget(const std::type_info* widget_type, const st
 	std::string* existing_tag = LLWidgetNameRegistry::instance().getValue(param_block_type);
 	if (existing_tag != NULL && *existing_tag != tag)
 	{
-		llerrs << "Duplicate entry for T::Params, try creating empty param block in derived classes that inherit T::Params" << llendl;
+		std::cerr << "Duplicate entry for T::Params, try creating empty param block in derived classes that inherit T::Params" << std::endl;
+		// forcing crash here
+		char* foo = 0;
+		*foo = 1;
 	}
 	LLWidgetNameRegistry ::instance().defaultRegistrar().add(param_block_type, tag);
 	// associate widget type with factory function
diff --git a/indra/newview/llchiclet.h b/indra/newview/llchiclet.h
index 489c66be71a..9d421b4f0bd 100644
--- a/indra/newview/llchiclet.h
+++ b/indra/newview/llchiclet.h
@@ -921,6 +921,9 @@ class LLIMWellChiclet : public LLSysWellChiclet, LLIMSessionObserver
 class LLNotificationChiclet : public LLSysWellChiclet
 {
 	friend class LLUICtrlFactory;
+public:
+	struct Params : public LLInitParam::Block<Params, LLSysWellChiclet::Params>{};
+
 protected:
 	LLNotificationChiclet(const Params& p);
 
-- 
GitLab