mirror of
https://git.do.srb2.org/STJr/SRB2.git
synced 2024-11-21 20:11:12 +00:00
Merge branch '712-trying-to-load-a-folder-as-an-addon-causes-a-bad-cycle-error-everytime' into 'next'
Resolve "[2.2.10 prerelease] Trying to load a folder as an addon causes a "bad cycle" error every time" Closes #712 See merge request STJr/SRB2!2412
This commit is contained in:
commit
c65acbcca8
2 changed files with 20 additions and 4 deletions
12
src/d_main.c
12
src/d_main.c
|
@ -1842,17 +1842,21 @@ static boolean check_top_dir(const char **path, const char *top)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int cmp_strlen_desc(const void *a, const void *b)
|
static int cmp_strlen_desc(const void *A, const void *B)
|
||||||
{
|
{
|
||||||
return ((int)strlen(*(const char*const*)b) - (int)strlen(*(const char*const*)a));
|
const char *pA = A;
|
||||||
|
const char *pB = B;
|
||||||
|
size_t As = strlen(pA);
|
||||||
|
size_t Bs = strlen(pB);
|
||||||
|
return ((int)Bs - (int)As);
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean D_IsPathAllowed(const char *path)
|
boolean D_IsPathAllowed(const char *path)
|
||||||
{
|
{
|
||||||
const char *paths[] = {
|
char *paths[] = {
|
||||||
srb2home,
|
srb2home,
|
||||||
srb2path,
|
srb2path,
|
||||||
cv_addons_folder.string
|
cv_addons_folder.zstring
|
||||||
};
|
};
|
||||||
|
|
||||||
const size_t n_paths = sizeof paths / sizeof *paths;
|
const size_t n_paths = sizeof paths / sizeof *paths;
|
||||||
|
|
|
@ -699,6 +699,15 @@ static void initdirpath(char *dirpath, size_t *dirpathindex, int depthleft)
|
||||||
dirpathindex[depthleft]--;
|
dirpathindex[depthleft]--;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//sortdir by name?
|
||||||
|
static int lumpnamecompare(const void *A, const void *B)
|
||||||
|
{
|
||||||
|
const lumpinfo_t *pA = A;
|
||||||
|
const lumpinfo_t *pB = B;
|
||||||
|
return strcmp((pA->fullname), (pB->fullname));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
lumpinfo_t *getdirectoryfiles(const char *path, UINT16 *nlmp, UINT16 *nfolders)
|
lumpinfo_t *getdirectoryfiles(const char *path, UINT16 *nlmp, UINT16 *nfolders)
|
||||||
{
|
{
|
||||||
DIR **dirhandle;
|
DIR **dirhandle;
|
||||||
|
@ -889,6 +898,9 @@ lumpinfo_t *getdirectoryfiles(const char *path, UINT16 *nlmp, UINT16 *nfolders)
|
||||||
free(dirpathindex);
|
free(dirpathindex);
|
||||||
free(dirhandle);
|
free(dirhandle);
|
||||||
|
|
||||||
|
//sort files and directories
|
||||||
|
qsort (lumpinfo, numlumps, sizeof(lumpinfo_t), lumpnamecompare);
|
||||||
|
|
||||||
(*nlmp) = numlumps;
|
(*nlmp) = numlumps;
|
||||||
return lumpinfo;
|
return lumpinfo;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue