@@ -2927,19 +2927,22 @@ s32 CARD_Delete(s32 chn,const char *filename)
29272927
29282928s32 CARD_DeleteEntryAsync (s32 chn ,card_dir * dir_entry ,cardcallback callback )
29292929{
2930- s32 ret ;
2930+ s32 ret , fileno ;
29312931 cardcallback cb = NULL ;
29322932 card_block * card = NULL ;
29332933 struct card_dat * dirblock = NULL ;
29342934 card_direntry * entry = NULL ;
29352935#ifdef _CARD_DEBUG
2936- printf ("CARD_DeleteEntryAsync(%p,%p)\n" ,dir_entry ,callback );
2936+ printf ("CARD_DeleteEntryAsync(%d,% p,%p)\n" , chn ,dir_entry ,callback );
29372937#endif
2938- if (chn < EXI_CHANNEL_0 || chn >=EXI_CHANNEL_2 ) return CARD_ERROR_NOCARD ;
29392938 if ((ret = __card_getcntrlblock (chn ,& card ))< 0 ) return ret ;
2939+ if ((ret = __card_getfilenum (card ,dir_entry -> filename ,(const char * )dir_entry -> gamecode ,(const char * )dir_entry -> company ,& fileno ))< 0 ) {
2940+ __card_putcntrlblock (card ,ret );
2941+ return ret ;
2942+ }
29402943
29412944 dirblock = __card_getdirblock (card );
2942- entry = & dirblock -> entries [dir_entry -> fileno ];
2945+ entry = & dirblock -> entries [fileno ];
29432946
29442947 card -> curr_fileblock = entry -> block ;
29452948 memset (entry ,-1 ,sizeof (card_direntry ));
@@ -2958,7 +2961,7 @@ s32 CARD_DeleteEntry(s32 chn,card_dir *dir_entry)
29582961{
29592962 s32 ret ;
29602963#ifdef _CARD_DEBUG
2961- printf ("CARD_DeleteEntry(%p)\n" ,dir_entry );
2964+ printf ("CARD_DeleteEntry(%d,% p)\n" , chn ,dir_entry );
29622965#endif
29632966 if ((ret = CARD_DeleteEntryAsync (chn ,dir_entry ,ogc_card_synccallback ))>=0 ) {
29642967 ret = ogc_card_sync (chn );
0 commit comments