restore sort function pointers when restoring cfg

This commit is contained in:
blissful 2023-11-17 17:25:16 -05:00
parent 9259170afd
commit 703d349389
No known key found for this signature in database
GPG Key ID: 3FC5AA97AA6A4D78
1 changed files with 8 additions and 5 deletions

View File

@ -4308,6 +4308,9 @@ static void savecurctx(char *path, char *curname, int nextctx)
tmpcfg.curctx = nextctx; tmpcfg.curctx = nextctx;
cfg = tmpcfg; cfg = tmpcfg;
/* Restore the global function pointers alongside the cfg. */
entrycmpfn = cfg.reverse ? &reventrycmp : &entrycmp;
namecmpfn = cfg.version ? &xstrverscasecmp : &xstricmp;
} }
#ifndef NOSSN #ifndef NOSSN
@ -6248,11 +6251,8 @@ static int set_sort_flags(int r)
r = 'd'; r = 'd';
} }
if (cfg.version) entrycmpfn = cfg.reverse ? &reventrycmp : &entrycmp;
namecmpfn = &xstrverscasecmp; namecmpfn = cfg.version ? &xstrverscasecmp : &xstricmp;
if (cfg.reverse)
entrycmpfn = &reventrycmp;
} else if (r == CONTROL('T')) { } else if (r == CONTROL('T')) {
/* Cycling order: clear -> size -> time -> clear */ /* Cycling order: clear -> size -> time -> clear */
if (cfg.timeorder) if (cfg.timeorder)
@ -8018,6 +8018,9 @@ nochange:
lastname = g_ctx[r].c_name; lastname = g_ctx[r].c_name;
cfg = g_ctx[r].c_cfg; cfg = g_ctx[r].c_cfg;
/* Restore the global function pointers alongside the cfg. */
entrycmpfn = cfg.reverse ? &reventrycmp : &entrycmp;
namecmpfn = cfg.version ? &xstrverscasecmp : &xstricmp;
cfg.curctx = r; cfg.curctx = r;
setdirwatch(); setdirwatch();