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
27
src/io.c
27
src/io.c
@ -33,6 +33,7 @@
|
|||||||
#ifndef _MSC_VER
|
#ifndef _MSC_VER
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#else
|
#else
|
||||||
|
#define strdup _strdup
|
||||||
#if _MSC_VER < 1900
|
#if _MSC_VER < 1900
|
||||||
#define snprintf _snprintf
|
#define snprintf _snprintf
|
||||||
#endif
|
#endif
|
||||||
@ -946,10 +947,10 @@ char * Get_current_directory(char * buf, word * * unicode, size_t size)
|
|||||||
#elif defined(WIN32)
|
#elif defined(WIN32)
|
||||||
if (buf == NULL)
|
if (buf == NULL)
|
||||||
{
|
{
|
||||||
size = (size_t)GetCurrentDirectoryA(0, buf);
|
size = (size_t)GetCurrentDirectoryA(0, NULL);
|
||||||
if (size == 0)
|
if (size == 0)
|
||||||
return NULL;
|
return NULL;
|
||||||
buf = malloc(size);
|
buf = (char *)malloc(size);
|
||||||
if (buf == NULL)
|
if (buf == NULL)
|
||||||
{
|
{
|
||||||
GFX2_Log(GFX2_ERROR, "Failed to allocate %lu bytes.\n", (unsigned long)size);
|
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)
|
if (GetCurrentDirectoryA(size, buf) == 0)
|
||||||
return NULL;
|
return NULL;
|
||||||
if (buf_unicode != NULL)
|
if (unicode != NULL)
|
||||||
{
|
{
|
||||||
int i;
|
WCHAR * temp = (WCHAR *)malloc(sizeof(WCHAR) * size);
|
||||||
WCHAR temp[MAX_PATH_CHARACTERS];
|
if (temp != NULL)
|
||||||
for (i = 0; i < MAX_PATH_CHARACTERS - 1 && buf[i] != '\0'; i++)
|
{
|
||||||
temp[i] = buf[i];
|
size_t i;
|
||||||
temp[i] = 0;
|
for (i = 0; i < size - 1 && buf[i] != '\0'; i++)
|
||||||
buf_unicode[0] = 0;
|
temp[i] = (WCHAR)buf[i] & 0x00ff;
|
||||||
GetLongPathNameW(temp, (WCHAR *)buf_unicode, size);
|
temp[i] = 0;
|
||||||
//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;
|
return buf;
|
||||||
#else
|
#else
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user