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:
Thomas Bernard 2019-01-14 12:19:47 +01:00
parent fc3e424922
commit 11ddd669b3
No known key found for this signature in database
GPG Key ID: 0FF11B67A5C0863C

View File

@ -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