From 3e2866f876696b149cee248e1e9bf5343dff0de6 Mon Sep 17 00:00:00 2001
From: Brad Linden <brad@lindenlab.com>
Date: Mon, 26 Aug 2024 14:49:11 -0700
Subject: secondlife/viewer#2395 fix start location coordinates getting double
 escaped

---
 indra/newview/lllogininstance.cpp | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

(limited to 'indra')

diff --git a/indra/newview/lllogininstance.cpp b/indra/newview/lllogininstance.cpp
index c54d2c080f..ad04c11cc6 100644
--- a/indra/newview/lllogininstance.cpp
+++ b/indra/newview/lllogininstance.cpp
@@ -602,13 +602,14 @@ std::string construct_start_string()
         {
             // a startup URL was specified
             LLVector3 position = start_slurl.getPosition();
-            std::string unescaped_start =
+            // NOTE - do not xml escape here, will get escaped properly later by LLSD::asXMLRPCValue()
+            // see secondlife/viewer#2395
+            start =
             STRINGIZE(  "uri:"
                       << start_slurl.getRegion() << "&"
                         << position[VX] << "&"
                         << position[VY] << "&"
                         << position[VZ]);
-            start = LLStringFn::xml_encode(unescaped_start, true);
             break;
         }
         case LLSLURL::HOME_LOCATION:
-- 
cgit v1.2.3


From e23f2f1cf7c5a3b34d1635c490e5c8871a4d9d5c Mon Sep 17 00:00:00 2001
From: Brad Linden <brad@lindenlab.com>
Date: Mon, 26 Aug 2024 15:01:04 -0700
Subject: defensively capture coroutine args by value

---
 indra/viewer_components/login/lllogin.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

(limited to 'indra')

diff --git a/indra/viewer_components/login/lllogin.cpp b/indra/viewer_components/login/lllogin.cpp
index 53bf97a47e..feebecf4cb 100644
--- a/indra/viewer_components/login/lllogin.cpp
+++ b/indra/viewer_components/login/lllogin.cpp
@@ -128,7 +128,7 @@ void LLLogin::Impl::connect(const std::string& uri, const LLSD& login_params)
     // Launch a coroutine with our login_() method. Run the coroutine until
     // its first wait; at that point, return here.
     std::string coroname =
-        LLCoros::instance().launch("LLLogin::Impl::login_", [&]() { loginCoro(uri, login_params); });
+        LLCoros::instance().launch("LLLogin::Impl::login_", [=]() { loginCoro(uri, login_params); });
 
     LL_DEBUGS("LLLogin") << " connected with uri '" << uri << "', login_params " << login_params << LL_ENDL;
 }
-- 
cgit v1.2.3