https://github.com/Teemperor updated https://github.com/llvm/llvm-project/pull/203035
>From 6d868ea1fa48b4eec913b7a4fb2eec6c1c07d1de Mon Sep 17 00:00:00 2001 From: Raphael Isemann <[email protected]> Date: Wed, 10 Jun 2026 16:50:35 +0100 Subject: [PATCH] [lldb] Fix mod-while-iteration in IRForTarget We modify the IR module here while iterating over it. Use the usual list trick to delay modification until after the loop. This was uncovered by bccd1b9cb744e5dd96ee59baa4bf4583457feea3 --- .../ExpressionParser/Clang/IRForTarget.cpp | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/lldb/source/Plugins/ExpressionParser/Clang/IRForTarget.cpp b/lldb/source/Plugins/ExpressionParser/Clang/IRForTarget.cpp index 532c1f129dab3..adfb5bd1eca94 100644 --- a/lldb/source/Plugins/ExpressionParser/Clang/IRForTarget.cpp +++ b/lldb/source/Plugins/ExpressionParser/Clang/IRForTarget.cpp @@ -544,6 +544,9 @@ bool IRForTarget::RewriteObjCConstStrings() { ValueSymbolTable &value_symbol_table = m_module->getValueSymbolTable(); + std::vector<std::pair<GlobalVariable *, GlobalVariable *>> + nsstring_to_cstr_list; + for (StringMapEntry<llvm::Value *> &value_symbol : value_symbol_table) { llvm::StringRef value_name = value_symbol.first(); @@ -684,14 +687,16 @@ bool IRForTarget::RewriteObjCConstStrings() { if (!cstr_array) cstr_global = nullptr; - if (!RewriteObjCConstString(nsstring_global, cstr_global)) { - LLDB_LOG(log, "Error rewriting the constant string"); - - // We don't print an error message here because RewriteObjCConstString - // has done so for us. + // Queue up replacing the string as we are currently iterating + // over the module. + nsstring_to_cstr_list.emplace_back(nsstring_global, cstr_global); + } + } - return false; - } + for (auto [nsstring_global, cstr_global] : nsstring_to_cstr_list) { + if (!RewriteObjCConstString(nsstring_global, cstr_global)) { + LLDB_LOG(log, "Error rewriting the constant string"); + return false; } } _______________________________________________ lldb-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
