forked from teamnwah/openmw-tes3coop
[Server] Fix memory leak in GetCellStateDescription()
This commit is contained in:
parent
268a1501ad
commit
1c810ecad5
2 changed files with 7 additions and 6 deletions
|
@ -16,7 +16,7 @@ unsigned int CellFunctions::GetCellStateChangesSize(unsigned short pid) noexcept
|
|||
return player->cellStateChanges.count;
|
||||
}
|
||||
|
||||
char *CellFunctions::GetCellStateDescription(unsigned short pid, unsigned int i) noexcept
|
||||
const char *CellFunctions::GetCellStateDescription(unsigned short pid, unsigned int i) noexcept
|
||||
{
|
||||
Player *player;
|
||||
GET_PLAYER(pid, player, "");
|
||||
|
@ -24,12 +24,13 @@ char *CellFunctions::GetCellStateDescription(unsigned short pid, unsigned int i)
|
|||
if (i >= player->cellStateChanges.count)
|
||||
return "invalid";
|
||||
|
||||
std::string cellDescription = player->cellStateChanges.cells.at(i).getDescription();
|
||||
string cellDescription = player->cellStateChanges.cells.at(i).getDescription();
|
||||
|
||||
char *cstrDescription = new char[cellDescription.length() + 1];
|
||||
std::strcpy(cstrDescription, cellDescription.c_str());
|
||||
static vector<char> cstrDescription;
|
||||
cstrDescription.reserve(cellDescription.size());
|
||||
strncpy(&cstrDescription[0], cellDescription.c_str(), cstrDescription.capacity());
|
||||
|
||||
return cstrDescription;
|
||||
return &cstrDescription[0];
|
||||
}
|
||||
|
||||
const char *CellFunctions::GetCell(unsigned short pid) noexcept
|
||||
|
|
|
@ -23,7 +23,7 @@ class CellFunctions
|
|||
public:
|
||||
static unsigned int GetCellStateChangesSize(unsigned short pid) noexcept;
|
||||
|
||||
static char *GetCellStateDescription(unsigned short pid, unsigned int i) noexcept;
|
||||
static const char *GetCellStateDescription(unsigned short pid, unsigned int i) noexcept;
|
||||
|
||||
static const char *GetCell(unsigned short pid) noexcept;
|
||||
static void SetCell(unsigned short pid, const char *name) noexcept;
|
||||
|
|
Loading…
Reference in a new issue