@@ -172,27 +172,20 @@ static saveHandler_t *promptSaveHandler()
172172gameSave_t * savesGetSaves (device_t dev )
173173{
174174 sceMcTblGetDir mcDir [64 ] __attribute__((aligned (64 )));
175- gameSave_t * saves ;
176- gameSave_t * save ;
175+ gameSave_t * saves = NULL ;
176+ gameSave_t * save = NULL ;
177177 saveHandler_t * handler ;
178178 mcIcon iconSys ;
179179 int ret , fd ;
180180 char iconSysPath [64 ];
181- int first = 1 ;
182-
183- saves = calloc (1 , sizeof (gameSave_t ));
184- save = saves ;
185181
186182 if (dev == FLASH_DRIVE )
187183 {
188184 fio_dirent_t record ;
189185 int fs = fioDopen (flashDriveDevice );
190186
191187 if (!fs )
192- {
193- free (saves );
194188 return NULL ;
195- }
196189
197190 while (fioDread (fs , & record ) > 0 )
198191 {
@@ -205,8 +198,13 @@ gameSave_t *savesGetSaves(device_t dev)
205198 printf ("Ignoring file \"%s\"\n" , record .name );
206199 continue ;
207200 }
208-
209- if (!first )
201+
202+ if (!saves )
203+ {
204+ saves = calloc (1 , sizeof (gameSave_t ));
205+ save = saves ;
206+ }
207+ else
210208 {
211209 gameSave_t * next = calloc (1 , sizeof (gameSave_t ));
212210 save -> next = next ;
@@ -218,15 +216,6 @@ gameSave_t *savesGetSaves(device_t dev)
218216 strncpy (save -> name , record .name , 100 );
219217 rtrim (save -> name );
220218 snprintf (save -> path , 64 , "%s%s" , flashDriveDevice , record .name );
221-
222- first = 0 ;
223- }
224-
225- if (first ) // Didn't find any saves
226- {
227- free (saves );
228- fioDclose (fs );
229- return NULL ;
230219 }
231220
232221 fioDclose (fs );
@@ -237,12 +226,6 @@ gameSave_t *savesGetSaves(device_t dev)
237226 mcGetDir ((dev == MC_SLOT_1 ) ? 0 : 1 , 0 , "/*" , 0 , 54 , mcDir );
238227 mcSync (0 , NULL , & ret );
239228
240- if (ret == 0 )
241- {
242- free (saves );
243- return NULL ;
244- }
245-
246229 int i ;
247230 for (i = 0 ; i < ret ; i ++ )
248231 {
@@ -256,15 +239,28 @@ gameSave_t *savesGetSaves(device_t dev)
256239 continue ; // Ignore "Your System Configuration" save
257240
258241 char * path = savesGetDevicePath (mcDir [i ].EntryName , dev );
259- strncpy ( save -> path , path , 64 );
242+ snprintf ( iconSysPath , 64 , "%s/icon.sys" , path );
260243 free (path );
261-
262- snprintf (iconSysPath , 64 , "%s/icon.sys" , save -> path );
263244
264245 fd = fioOpen (iconSysPath , O_RDONLY );
265246 if (!fd )
266247 continue ; // invalid save
267248
249+ if (!saves )
250+ {
251+ saves = calloc (1 , sizeof (gameSave_t ));
252+ save = saves ;
253+ }
254+ else
255+ {
256+ gameSave_t * next = calloc (1 , sizeof (gameSave_t ));
257+ save -> next = next ;
258+ save = next ;
259+ next -> next = NULL ;
260+ }
261+
262+ strncpy (save -> path , path , 64 );
263+
268264 fioRead (fd , & iconSys , sizeof (mcIcon ));
269265 fioClose (fd );
270266
@@ -323,15 +319,6 @@ gameSave_t *savesGetSaves(device_t dev)
323319
324320 strncpy (save -> name , ascii , 100 );
325321 rtrim (save -> name );
326-
327- if (i != ret - 1 )
328- {
329- gameSave_t * next = calloc (1 , sizeof (gameSave_t ));
330- save -> next = next ;
331- save = next ;
332- }
333- else
334- save -> next = NULL ;
335322 }
336323 }
337324
0 commit comments