forked from bartvdbraak/blender
fix for crash in BLI_join_dirfile() when the dir is longer then the target string.
starting blender in a dir longer then 240 chars would crash.
This commit is contained in:
parent
45ad9faf34
commit
85a2280c86
@ -1435,14 +1435,14 @@ void BLI_join_dirfile(char *string, const size_t maxlen, const char *dir, const
|
|||||||
int sl_dir;
|
int sl_dir;
|
||||||
|
|
||||||
if(string != dir) /* compare pointers */
|
if(string != dir) /* compare pointers */
|
||||||
BLI_strncpy(string, dir, maxlen);
|
BLI_strncpy(string, dir, maxlen -(file ? 1 : 0));
|
||||||
|
|
||||||
if (!file)
|
if (!file)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
sl_dir= BLI_add_slash(string);
|
sl_dir= BLI_add_slash(string);
|
||||||
|
|
||||||
if (sl_dir <FILE_MAX) {
|
if (sl_dir < maxlen) {
|
||||||
BLI_strncpy(string + sl_dir, file, maxlen - sl_dir);
|
BLI_strncpy(string + sl_dir, file, maxlen - sl_dir);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1584,19 +1584,11 @@ char *BLI_last_slash(const char *string)
|
|||||||
int BLI_add_slash(char *string)
|
int BLI_add_slash(char *string)
|
||||||
{
|
{
|
||||||
int len = strlen(string);
|
int len = strlen(string);
|
||||||
#ifdef WIN32
|
if (len==0 || string[len-1] != SEP) {
|
||||||
if (len==0 || string[len-1]!='\\') {
|
string[len] = SEP;
|
||||||
string[len] = '\\';
|
|
||||||
string[len+1] = '\0';
|
string[len+1] = '\0';
|
||||||
return len+1;
|
return len+1;
|
||||||
}
|
}
|
||||||
#else
|
|
||||||
if (len==0 || string[len-1]!='/') {
|
|
||||||
string[len] = '/';
|
|
||||||
string[len+1] = '\0';
|
|
||||||
return len+1;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
return len;
|
return len;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1605,11 +1597,7 @@ void BLI_del_slash(char *string)
|
|||||||
{
|
{
|
||||||
int len = strlen(string);
|
int len = strlen(string);
|
||||||
while (len) {
|
while (len) {
|
||||||
#ifdef WIN32
|
if (string[len-1] == SEP) {
|
||||||
if (string[len-1]=='\\') {
|
|
||||||
#else
|
|
||||||
if (string[len-1]=='/') {
|
|
||||||
#endif
|
|
||||||
string[len-1] = '\0';
|
string[len-1] = '\0';
|
||||||
len--;
|
len--;
|
||||||
} else {
|
} else {
|
||||||
|
Loading…
Reference in New Issue
Block a user