@@ -2950,19 +2950,22 @@ s32 CARD_Delete(s32 chn,const char *filename)
29502950
29512951s32 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