Fix use-after-scope in dex2oat cmdline parsing

Bug: 227217805
Change-Id: Ibf2f5e4892fc3199ec44a09721d4cbb921901732
diff --git a/cmdline/detail/cmdline_parse_argument_detail.h b/cmdline/detail/cmdline_parse_argument_detail.h
index 95883cc..0bde57b 100644
--- a/cmdline/detail/cmdline_parse_argument_detail.h
+++ b/cmdline/detail/cmdline_parse_argument_detail.h
@@ -150,9 +150,11 @@
     for (auto cname : names_) {
       std::string_view name = cname;
       auto& os = vios.Stream();
+      // nblank gets captured by print_once, so needs to be declared here.
+      std::string_view nblank;
       std::function<void()> print_once;
       if (using_blanks_) {
-        std::string_view nblank = name.substr(0, name.find("_"));
+        nblank = name.substr(0, name.find("_"));
         print_once = [&]() {
           os << nblank;
           if (has_value_map_) {