summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--firmware/common/dircache.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/firmware/common/dircache.c b/firmware/common/dircache.c
index 8a75f3bbad..08457f2da1 100644
--- a/firmware/common/dircache.c
+++ b/firmware/common/dircache.c
@@ -425,15 +425,18 @@ static void binding_resolve(const struct file_base_info *infop)
425 } 425 }
426 426
427 if (p == dcrivolp->queued0) 427 if (p == dcrivolp->queued0)
428 {
428 dcrivolp->queued0 = BINDING_NEXT(p); 429 dcrivolp->queued0 = BINDING_NEXT(p);
430 if (dcrivolp->resolved0 == NULL)
431 dcrivolp->resolved0 = p;
432 }
429 else 433 else
430 { 434 {
431 file_binding_remove_next(prevp, p); 435 file_binding_remove_next(prevp, p);
432 file_binding_insert_first(p); 436 file_binding_insert_first(p);
437 dcrivolp->resolved0 = p;
433 } 438 }
434 439
435 dcrivolp->resolved0 = p;
436
437 /* srcinfop may be the actual one */ 440 /* srcinfop may be the actual one */
438 if (&p->info != infop) 441 if (&p->info != infop)
439 p->info.dcfile = infop->dcfile; 442 p->info.dcfile = infop->dcfile;
@@ -1375,6 +1378,8 @@ static void sab_process_sub(struct sab *sabp)
1375 infop->fatfile.dircluster = dircluster; 1378 infop->fatfile.dircluster = dircluster;
1376 infop->fatfile.e.entry = ce->direntry; 1379 infop->fatfile.e.entry = ce->direntry;
1377 infop->fatfile.e.entries = ce->direntries; 1380 infop->fatfile.e.entries = ce->direntries;
1381 infop->dcfile.idx = idx;
1382 infop->dcfile.serialnum = ce->serialnum;
1378 } /* end while */ 1383 } /* end while */
1379} 1384}
1380 1385