Files
UnrealEngineUWP/Engine/Source/Programs/UnrealHeaderTool/Private/FileLineException.cpp
ben marsh 2b46ba7b94 Update copyright notices to 2019.
#rb none
#lockdown Nick.Penwarden

#ROBOMERGE-OWNER: ryan.gerleve
#ROBOMERGE-AUTHOR: ben.marsh
#ROBOMERGE-SOURCE: CL 4662404 in //UE4/Main/...
#ROBOMERGE-BOT: ENGINE (Main -> Dev-Networking)

[CL 4662413 by ben marsh in Dev-Networking branch]
2018-12-14 13:44:01 -05:00

46 lines
1.1 KiB
C++

// Copyright 1998-2019 Epic Games, Inc. All Rights Reserved.
#include "FileLineException.h"
#include "UnrealHeaderTool.h"
void VARARGS FFileLineException::ThrowfImpl(FString&& InFilename, int32 InLine, const TCHAR* Fmt, ...)
{
int32 BufferSize = 512;
TCHAR StartingBuffer[512];
TCHAR* Buffer = StartingBuffer;
int32 Result = -1;
// First try to print to a stack allocated location
GET_VARARGS_RESULT( Buffer, BufferSize, BufferSize-1, Fmt, Fmt, Result );
// If that fails, start allocating regular memory
if( Result == -1 )
{
Buffer = nullptr;
while(Result == -1)
{
BufferSize *= 2;
Buffer = (TCHAR*) FMemory::Realloc( Buffer, BufferSize * sizeof(TCHAR) );
GET_VARARGS_RESULT( Buffer, BufferSize, BufferSize-1, Fmt, Fmt, Result );
}
}
Buffer[Result] = 0;
FString ResultString(Buffer);
if( BufferSize != 512 )
{
FMemory::Free( Buffer );
}
throw FFileLineException(MoveTemp(ResultString), MoveTemp(InFilename), InLine);
}
FFileLineException::FFileLineException(FString&& InMessage, FString&& InFilename, int32 InLine)
: Message (MoveTemp(InMessage))
, Filename(MoveTemp(InFilename))
, Line (InLine)
{
}