From 246f1f72ad2418930ac8837f0788d09a2b24ee6b Mon Sep 17 00:00:00 2001 From: Brian Potchik Date: Wed, 2 Jul 2025 23:48:32 -0400 Subject: Add outlining support for wmemcpy. --- lang/rust/pseudorust.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'lang/rust') diff --git a/lang/rust/pseudorust.cpp b/lang/rust/pseudorust.cpp index 2f9b751c..429def51 100644 --- a/lang/rust/pseudorust.cpp +++ b/lang/rust/pseudorust.cpp @@ -1278,6 +1278,7 @@ void PseudoRustFunction::GetExprText(const HighLevelILInstruction& instr, HighLe const ConstantData& data = instr.GetConstantData(); if (auto [db, builtin] = data.ToDataBuffer(); db.GetLength()) { + bool nullTerminates = true; switch (builtin) { case BuiltinStrcpy: @@ -1302,9 +1303,12 @@ void PseudoRustFunction::GetExprText(const HighLevelILInstruction& instr, HighLe tokens.Append(BraceToken, "}"); break; } + case BuiltinWmemcpy: + nullTerminates = false; + // FALL_THROUGH default: { - if (auto unicode = GetFunction()->GetView()->StringifyUnicodeData(instr.function->GetArchitecture(), db); unicode.has_value()) + if (auto unicode = GetFunction()->GetView()->StringifyUnicodeData(instr.function->GetArchitecture(), db, nullTerminates); unicode.has_value()) { auto wideStringPrefix = (builtin == BuiltinWcscpy) ? "L" : ""; auto tokenContext = (builtin == BuiltinWcscpy) ? ConstStringDataTokenContext : ConstDataTokenContext; -- cgit v1.3.1