summaryrefslogtreecommitdiff
path: root/lang/c/pseudoc.cpp
diff options
context:
space:
mode:
authorBrian Potchik <brian@vector35.com>2025-07-02 23:48:32 -0400
committerBrian Potchik <brian@vector35.com>2025-07-02 23:48:32 -0400
commit246f1f72ad2418930ac8837f0788d09a2b24ee6b (patch)
treee99fab87b8bec6f8e6f8b60f546c285d41a494c6 /lang/c/pseudoc.cpp
parent48e705fd2ea86f985483312fa8ac98d5c5300466 (diff)
Add outlining support for wmemcpy.
Diffstat (limited to 'lang/c/pseudoc.cpp')
-rw-r--r--lang/c/pseudoc.cpp6
1 files changed, 5 insertions, 1 deletions
diff --git a/lang/c/pseudoc.cpp b/lang/c/pseudoc.cpp
index 6f3c58ab..4d585966 100644
--- a/lang/c/pseudoc.cpp
+++ b/lang/c/pseudoc.cpp
@@ -1260,6 +1260,7 @@ void PseudoCFunction::GetExprTextInternal(const HighLevelILInstruction& instr, H
const ConstantData& data = instr.GetConstantData<HLIL_CONST_DATA>();
if (auto [db, builtin] = data.ToDataBuffer(); db.GetLength())
{
+ bool nullTerminates = true;
switch (builtin)
{
case BuiltinStrcpy:
@@ -1284,9 +1285,12 @@ void PseudoCFunction::GetExprTextInternal(const HighLevelILInstruction& instr, H
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;