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;
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
const char *paths[] = {
|
||||
char *paths[] = {
|
||||
srb2home,
|
||||
srb2path,
|
||||
cv_addons_folder.string
|
||||
cv_addons_folder.zstring
|
||||
};
|
||||
|
||||
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]--;
|
||||
}
|
||||
|
||||
//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)
|
||||
{
|
||||
DIR **dirhandle;
|
||||
|
@ -889,6 +898,9 @@ lumpinfo_t *getdirectoryfiles(const char *path, UINT16 *nlmp, UINT16 *nfolders)
|
|||
free(dirpathindex);
|
||||
free(dirhandle);
|
||||
|
||||
//sort files and directories
|
||||
qsort (lumpinfo, numlumps, sizeof(lumpinfo_t), lumpnamecompare);
|
||||
|
||||
(*nlmp) = numlumps;
|
||||
return lumpinfo;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue