https://git.reactos.org/?p=reactos.git;a=commitdiff;h=fa3e1735152a12a9111c2…
commit fa3e1735152a12a9111c20c16e9a72ba1a913250
Author: Mark Jansen <mark.jansen(a)reactos.org>
AuthorDate: Sun Dec 24 01:28:16 2017 +0100
[ATL] Add CString.AllocSysString
---
sdk/lib/atl/cstringt.h | 27 ++++++++++++++++++++++++++-
1 file changed, 26 insertions(+), 1 deletion(-)
diff --git a/sdk/lib/atl/cstringt.h b/sdk/lib/atl/cstringt.h
index b758514ba4..5d278c5a0a 100644
--- a/sdk/lib/atl/cstringt.h
+++ b/sdk/lib/atl/cstringt.h
@@ -143,6 +143,12 @@ public:
return ::vswprintf(pszDest, pszFormat, args);
}
+ static BSTR __cdecl AllocSysString(
+ _In_z_ LPCWSTR pszSource,
+ _In_ int nLength)
+ {
+ return ::SysAllocStringLen(pszSource, nLength);
+ }
};
@@ -269,6 +275,19 @@ public:
return ::vsprintf(pszDest, pszFormat, args);
}
+ static BSTR __cdecl AllocSysString(
+ _In_z_ LPCSTR pszSource,
+ _In_ int nLength)
+ {
+ int nLen = ChTraitsCRT<wchar_t>::GetBaseTypeLength(pszSource, nLength);
+ BSTR bstr = ::SysAllocStringLen(NULL, nLen);
+ if (bstr)
+ {
+ ChTraitsCRT<wchar_t>::ConvertToBaseType(bstr, nLen, pszSource,
nLength);
+ }
+ return bstr;
+ }
+
};
@@ -797,8 +816,14 @@ public:
}
+ BSTR AllocSysString() const
+ {
+ return StringTraits::AllocSysString(CThisSimpleString::GetString(),
CThisSimpleString::GetLength());
+ }
+
+
};
} //namespace ATL
-#endif
\ No newline at end of file
+#endif