Remove some static length strings
There are too many MAX_PATH_CHARACTERS length string. make Initial_directory, Data_directory, Config_directory dynamically allocated. remove big static strings in Init_Program()
This commit is contained in:
parent
fc3e424922
commit
11ddd669b3
25
src/io.c
25
src/io.c
@ -33,6 +33,7 @@
|
||||
#ifndef _MSC_VER
|
||||
#include <unistd.h>
|
||||
#else
|
||||
#define strdup _strdup
|
||||
#if _MSC_VER < 1900
|
||||
#define snprintf _snprintf
|
||||
#endif
|
||||
@ -946,10 +947,10 @@ char * Get_current_directory(char * buf, word * * unicode, size_t size)
|
||||
#elif defined(WIN32)
|
||||
if (buf == NULL)
|
||||
{
|
||||
size = (size_t)GetCurrentDirectoryA(0, buf);
|
||||
size = (size_t)GetCurrentDirectoryA(0, NULL);
|
||||
if (size == 0)
|
||||
return NULL;
|
||||
buf = malloc(size);
|
||||
buf = (char *)malloc(size);
|
||||
if (buf == NULL)
|
||||
{
|
||||
GFX2_Log(GFX2_ERROR, "Failed to allocate %lu bytes.\n", (unsigned long)size);
|
||||
@ -958,16 +959,20 @@ char * Get_current_directory(char * buf, word * * unicode, size_t size)
|
||||
}
|
||||
if (GetCurrentDirectoryA(size, buf) == 0)
|
||||
return NULL;
|
||||
if (buf_unicode != NULL)
|
||||
if (unicode != NULL)
|
||||
{
|
||||
int i;
|
||||
WCHAR temp[MAX_PATH_CHARACTERS];
|
||||
for (i = 0; i < MAX_PATH_CHARACTERS - 1 && buf[i] != '\0'; i++)
|
||||
temp[i] = buf[i];
|
||||
WCHAR * temp = (WCHAR *)malloc(sizeof(WCHAR) * size);
|
||||
if (temp != NULL)
|
||||
{
|
||||
size_t i;
|
||||
for (i = 0; i < size - 1 && buf[i] != '\0'; i++)
|
||||
temp[i] = (WCHAR)buf[i] & 0x00ff;
|
||||
temp[i] = 0;
|
||||
buf_unicode[0] = 0;
|
||||
GetLongPathNameW(temp, (WCHAR *)buf_unicode, size);
|
||||
//GetCurrentDirectoryW(size, (WCHAR *)buf_unicode);
|
||||
size = GetLongPathNameW(temp, NULL, 0);
|
||||
*unicode = (word *)malloc(size*sizeof(word));
|
||||
GetLongPathNameW(temp, (WCHAR *)*unicode, size);
|
||||
free(temp);
|
||||
}
|
||||
}
|
||||
return buf;
|
||||
#else
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user