mirror of
https://github.com/ApfelTeeSaft/reactos.git
synced 2026-08-29 19:26:33 +00:00
Fix memory leaks/wrong heap usage by replacing calls to _tcsdup with cmd_dup
svn path=/trunk/; revision=29909
This commit is contained in:
@@ -146,6 +146,23 @@ cmd_free_dbg(void *ptr, const char *file, int line)
|
||||
free(ptr);
|
||||
}
|
||||
|
||||
TCHAR *
|
||||
cmd_dup_dbg(const TCHAR *str, const char *file, int line)
|
||||
{
|
||||
TCHAR *ptr = NULL;
|
||||
|
||||
if (str != NULL)
|
||||
{
|
||||
ptr = (TCHAR *)cmd_alloc_dbg((_tcslen(str) + 1) * sizeof(TCHAR), file, line);
|
||||
if (ptr != NULL)
|
||||
{
|
||||
_tcscpy(ptr, str);
|
||||
}
|
||||
}
|
||||
|
||||
return ptr;
|
||||
}
|
||||
|
||||
void
|
||||
cmd_checkbuffer_dbg(void *ptr, const char *file, int line)
|
||||
{
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
#define cmd_realloc(ptr,size) cmd_realloc_dbg(ptr, size, __FILE__, __LINE__)
|
||||
#define cmd_free(ptr) cmd_free_dbg(ptr, __FILE__, __LINE__)
|
||||
#define cmd_checkbuffer(ptr) cmd_checkbuffer_dbg(ptr, __FILE__, __LINE__)
|
||||
#define cmd_dup(str) cmd_dup_dbg(str, __FILE__, __LINE__)
|
||||
|
||||
void *
|
||||
cmd_alloc_dbg(size_t size, const char *file, int line);
|
||||
@@ -14,6 +15,9 @@ cmd_realloc_dbg(void *ptr, size_t size, const char *file, int line);
|
||||
void
|
||||
cmd_free_dbg(void *ptr, const char *file, int line);
|
||||
|
||||
TCHAR *
|
||||
cmd_dup_dbg(const TCHAR *str, const char *file, int line);
|
||||
|
||||
void
|
||||
cmd_checkbuffer_dbg(void *ptr, const char *file, int line);
|
||||
|
||||
@@ -25,6 +29,7 @@ cmd_exit(int code);
|
||||
#define cmd_alloc(size) malloc(size)
|
||||
#define cmd_realloc(ptr,size) realloc(ptr, size)
|
||||
#define cmd_free(ptr) free(ptr)
|
||||
#define cmd_dup(str) _tcsdup(str)
|
||||
#define cmd_checkbuffer(ptr)
|
||||
|
||||
#endif
|
||||
|
||||
@@ -135,7 +135,7 @@ INT cmd_for (LPTSTR cmd, LPTSTR param)
|
||||
bc->params = BatchParams (_T(""), param); /* Split out list */
|
||||
bc->shiftlevel = 0;
|
||||
bc->forvar = var;
|
||||
bc->forproto = _tcsdup (pp);
|
||||
bc->forproto = cmd_dup (pp);
|
||||
if (bc->prev)
|
||||
bc->bEcho = bc->prev->bEcho;
|
||||
else
|
||||
|
||||
@@ -236,7 +236,7 @@ SearchForExecutable (LPCTSTR pFileName, LPTSTR pFullName)
|
||||
if (pExt != NULL)
|
||||
{
|
||||
LPTSTR pszBuffer2;
|
||||
pszBuffer2 = _tcsdup(pszBuffer);
|
||||
pszBuffer2 = cmd_dup(pszBuffer);
|
||||
if (pszBuffer2)
|
||||
{
|
||||
pCh = _tcstok(pszBuffer2, _T(";"));
|
||||
@@ -245,12 +245,12 @@ SearchForExecutable (LPCTSTR pFileName, LPTSTR pFullName)
|
||||
if (0 == _tcsicmp(pCh, pExt))
|
||||
{
|
||||
cmd_free(pszBuffer);
|
||||
LocalFree(pszBuffer2);
|
||||
cmd_free(pszBuffer2);
|
||||
return SearchForExecutableSingle(pFileName, pFullName, NULL);
|
||||
}
|
||||
pCh = _tcstok(NULL, _T(";"));
|
||||
}
|
||||
LocalFree(pszBuffer2);
|
||||
cmd_free(pszBuffer2);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user