blob: 10aa6d179ef4c352e02b3deacdef1d5375fea940 [file]
//
// Copyright (c) Microsoft. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
//
/*++
Module Name:
strutil.cpp
Abstract:
Various string-related utility functions
--*/
#include "pal/corunix.hpp"
#include "pal/thread.hpp"
#include "pal/malloc.hpp"
#include "pal/dbgmsg.h"
SET_DEFAULT_DEBUG_CHANNEL(PAL);
using namespace CorUnix;
/*++
Function:
CPalString::CopyString
Copies a CPalString into a new (empty) instance, allocating buffer space
as necessary
Parameters:
psSource -- the string to copy from
--*/
PAL_ERROR
CPalString::CopyString(
CPalString *psSource
)
{
PAL_ERROR palError = NO_ERROR;
_ASSERTE(NULL != psSource);
_ASSERTE(NULL == m_pwsz);
_ASSERTE(0 == m_dwStringLength);
_ASSERTE(0 == m_dwMaxLength);
if (0 != psSource->GetStringLength())
{
_ASSERTE(psSource->GetMaxLength() > psSource->GetStringLength());
WCHAR *pwsz = reinterpret_cast<WCHAR*>(
InternalMalloc(psSource->GetMaxLength() * sizeof(WCHAR))
);
if (NULL != pwsz)
{
_ASSERTE(NULL != psSource->GetString());
CopyMemory(
pwsz,
psSource->GetString(),
psSource->GetMaxLength() * sizeof(WCHAR)
);
m_pwsz = pwsz;
m_dwStringLength = psSource->GetStringLength();
m_dwMaxLength = psSource->GetMaxLength();
}
else
{
palError = ERROR_OUTOFMEMORY;
}
}
return palError;
}
/*++
Function:
CPalString::FreeBuffer
Frees the contained string buffer
--*/
void
CPalString::FreeBuffer()
{
_ASSERTE(NULL != m_pwsz);
InternalFree(const_cast<WCHAR*>(m_pwsz));
}