Skip to content

Commit 6bce866

Browse files
committed
Fix CARD_DeleteEntry
1 parent 7aa3ed3 commit 6bce866

File tree

1 file changed

+8
-5
lines changed

1 file changed

+8
-5
lines changed

libogc/card.c

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2950,19 +2950,22 @@ s32 CARD_Delete(s32 chn,const char *filename)
29502950

29512951
s32 CARD_DeleteEntryAsync(s32 chn,card_dir *dir_entry,cardcallback callback)
29522952
{
2953-
s32 ret;
2953+
s32 ret,fileno;
29542954
cardcallback cb = NULL;
29552955
card_block *card = NULL;
29562956
struct card_dat *dirblock = NULL;
29572957
struct card_direntry *entry = NULL;
29582958
#ifdef _CARD_DEBUG
2959-
printf("CARD_DeleteEntryAsync(%p,%p)\n",dir_entry,callback);
2959+
printf("CARD_DeleteEntryAsync(%d,%p,%p)\n",chn,dir_entry,callback);
29602960
#endif
2961-
if(chn<EXI_CHANNEL_0 || chn>=EXI_CHANNEL_2) return CARD_ERROR_NOCARD;
29622961
if((ret=__card_getcntrlblock(chn,&card))<0) return ret;
2962+
if((ret=__card_getfilenum(card,dir_entry->filename,(const char*)dir_entry->gamecode,(const char*)dir_entry->company,&fileno))<0) {
2963+
__card_putcntrlblock(card,ret);
2964+
return ret;
2965+
}
29632966

29642967
dirblock = __card_getdirblock(card);
2965-
entry = &dirblock->entries[dir_entry->fileno];
2968+
entry = &dirblock->entries[fileno];
29662969

29672970
card->curr_fileblock = entry->block;
29682971
memset(entry,-1,sizeof(struct card_direntry));
@@ -2981,7 +2984,7 @@ s32 CARD_DeleteEntry(s32 chn,card_dir *dir_entry)
29812984
{
29822985
s32 ret;
29832986
#ifdef _CARD_DEBUG
2984-
printf("CARD_DeleteEntry(%p)\n",dir_entry);
2987+
printf("CARD_DeleteEntry(%d,%p)\n",chn,dir_entry);
29852988
#endif
29862989
if((ret=CARD_DeleteEntryAsync(chn,dir_entry,__card_synccallback))>=0) {
29872990
ret = __card_sync(chn);

0 commit comments

Comments
 (0)