diff options
-rw-r--r-- | firmware/common/dircache.c | 9 |
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 | ||