From 0e3c74d77b5fc4233957f44dad01547d3f250e12 Mon Sep 17 00:00:00 2001
From: Rye Mutt <rye@alchemyviewer.org>
Date: Wed, 12 Feb 2020 23:55:49 -0500
Subject: [PATCH] Make the dumpsterlogger crash less

---
 indra/newview/llfloatermessagelog.cpp | 64 ++++++++++++++-------------
 1 file changed, 33 insertions(+), 31 deletions(-)

diff --git a/indra/newview/llfloatermessagelog.cpp b/indra/newview/llfloatermessagelog.cpp
index 66cab11ae3..a8d6323e2b 100644
--- a/indra/newview/llfloatermessagelog.cpp
+++ b/indra/newview/llfloatermessagelog.cpp
@@ -533,53 +533,55 @@ void LLFloaterMessageLog::conditionalLog(LogPayload entry)
 	}
 
 	//add the message to the messagelog scroller
-    LLSD element;
-	element["id"] = item->mID;
+	LLScrollListCell::Params sequence_column;
+	LLScrollListCell::Params protocol_column;
+	LLScrollListCell::Params verb_column;
+	LLScrollListCell::Params net_column;
+	LLScrollListCell::Params name_column;
 
-    LLSD& sequence_column = element["columns"][0];
-    sequence_column["column"] = "sequence";
-    sequence_column["value"] = fmt::to_string(item->mSequenceID);
+	sequence_column.column("sequence").type("text").value(fmt::to_string(item->mSequenceID));
 
-	LLSD& protocol_column = element["columns"][1];
-    protocol_column["column"] = "protocol";
-    switch (message_type)
-    {
-    case LLMessageLogEntry::TEMPLATE:
-        protocol_column["value"] = "UDP";
-        break;
-    case LLMessageLogEntry::HTTP_REQUEST:
-        protocol_column["value"] = "HTTP";
-        break;
-    default:
-        protocol_column["value"] = "\?\?\?";
-        break;
-    }
+	protocol_column.column("protocol").type("text");
+	switch (message_type)
+	{
+	case LLMessageLogEntry::TEMPLATE:
+		protocol_column.value("UDP");
+		break;
+	case LLMessageLogEntry::HTTP_REQUEST:
+		protocol_column.value("HTTP");
+		break;
+	default:
+		protocol_column.value("\?\?\?");
+		break;
+	}
 
-    LLSD& verb_column = element["columns"][2];
-    verb_column["column"] = "verb";
+	verb_column.column("verb").type("text");
 	switch (message_type)
 	{
 	case LLMessageLogEntry::TEMPLATE:
-        verb_column["value"] = item->isOutgoing() ? "out" : "in";
+		verb_column.value(item->isOutgoing() ? "out" : "in");
 		break;
 	case LLMessageLogEntry::HTTP_REQUEST:
-        verb_column["value"] = httpMethodAsVerb((*item)()->mMethod);
+		verb_column.value(httpMethodAsVerb((*item)()->mMethod));
 		break;
 	default:
-        break;
+		break;
 	}
 
-	LLSD& net_column = element["columns"][3];
-	net_column["column"] = "net";
-	net_column["value"] = net_name;
+	net_column.column("net").type("text").value(net_name);
+	name_column.column("name").type("text").value(item->getName());
 
-	LLSD& name_column = element["columns"][4];
-	name_column["column"] = "name";
-	name_column["value"] = item->getName();
+	LLScrollListItem::Params row;
+	row.value = item->mID;
+	row.columns.add(sequence_column);
+	row.columns.add(protocol_column);
+	row.columns.add(verb_column);
+	row.columns.add(net_column);
+	row.columns.add(name_column);
 
 	S32 scroll_pos = mMessagelogScrollListCtrl->getScrollPos();
 
-	mMessagelogScrollListCtrl->addElement(element, ADD_BOTTOM);
+	mMessagelogScrollListCtrl->addRow(row, ADD_BOTTOM);
 
 	if (scroll_pos > mMessagelogScrollListCtrl->getItemCount() - mMessagelogScrollListCtrl->getLinesPerPage() - 4)
 		mMessagelogScrollListCtrl->setScrollPos(mMessagelogScrollListCtrl->getItemCount());
-- 
GitLab