mirror of
https://gitlab.com/Theopse/fbi-i18n-zh.git
synced 2025-05-31 20:29:16 +08:00
Don't add new archives to reference list if already present.
This commit is contained in:
parent
ff052e8920
commit
8498a1a5c3
@ -441,22 +441,6 @@ typedef struct {
|
|||||||
|
|
||||||
static linked_list opened_archives;
|
static linked_list opened_archives;
|
||||||
|
|
||||||
static Result util_add_archive_ref(FS_Archive archive) {
|
|
||||||
Result res = 0;
|
|
||||||
|
|
||||||
archive_ref* ref = (archive_ref*) calloc(1, sizeof(archive_ref));
|
|
||||||
if(ref != NULL) {
|
|
||||||
ref->archive = archive;
|
|
||||||
ref->refs = 1;
|
|
||||||
|
|
||||||
linked_list_add(&opened_archives, ref);
|
|
||||||
} else {
|
|
||||||
res = R_FBI_OUT_OF_MEMORY;
|
|
||||||
}
|
|
||||||
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
|
|
||||||
Result util_open_archive(FS_Archive* archive, FS_ArchiveID id, FS_Path path) {
|
Result util_open_archive(FS_Archive* archive, FS_ArchiveID id, FS_Path path) {
|
||||||
if(archive == NULL) {
|
if(archive == NULL) {
|
||||||
return R_FBI_INVALID_ARGUMENT;
|
return R_FBI_INVALID_ARGUMENT;
|
||||||
@ -466,7 +450,7 @@ Result util_open_archive(FS_Archive* archive, FS_ArchiveID id, FS_Path path) {
|
|||||||
|
|
||||||
FS_Archive arch = 0;
|
FS_Archive arch = 0;
|
||||||
if(R_SUCCEEDED(res = FSUSER_OpenArchive(&arch, id, path))) {
|
if(R_SUCCEEDED(res = FSUSER_OpenArchive(&arch, id, path))) {
|
||||||
if(R_SUCCEEDED(res = util_add_archive_ref(arch))) {
|
if(R_SUCCEEDED(res = util_ref_archive(arch))) {
|
||||||
*archive = arch;
|
*archive = arch;
|
||||||
} else {
|
} else {
|
||||||
FSUSER_CloseArchive(arch);
|
FSUSER_CloseArchive(arch);
|
||||||
@ -488,7 +472,19 @@ Result util_ref_archive(FS_Archive archive) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return util_add_archive_ref(archive);
|
Result res = 0;
|
||||||
|
|
||||||
|
archive_ref* ref = (archive_ref*) calloc(1, sizeof(archive_ref));
|
||||||
|
if(ref != NULL) {
|
||||||
|
ref->archive = archive;
|
||||||
|
ref->refs = 1;
|
||||||
|
|
||||||
|
linked_list_add(&opened_archives, ref);
|
||||||
|
} else {
|
||||||
|
res = R_FBI_OUT_OF_MEMORY;
|
||||||
|
}
|
||||||
|
|
||||||
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
Result util_close_archive(FS_Archive archive) {
|
Result util_close_archive(FS_Archive archive) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user