修复文件名不正确导致的prefetch abort异常

This commit is contained in:
root 2024-04-24 09:07:00 +08:00
parent d5aca97197
commit fcd5bc1ae9

View File

@ -1001,28 +1001,28 @@ static void repairBootFirm( char *firm_path )
{ {
if( 0 == strcmp(firm_path, autorun) ) if( 0 == strcmp(firm_path, autorun) )
{ {
char firmname[0x40]; char firmname[512]; // 为啥不是0x40因为fsLoadPathFromFile要的是512
memset( firmname, 0, 0x40 ); if( RES_OK == fsLoadPathFromFile("autorun", firmname) )
if( RES_OK == fsQuickRead("autorun", firmname, 0x3f) )
{ {
fRename( autorun, firmname ); fRename( autorun, firmname );
strncpy( firm_path, firmname, 0x40 ); strncpy( firm_path, firmname, 0x3f );
} }
else else
{ {
const char *default_path = "sdmc:/luma/payloads/open_agb_firm.firm"; const char *default_path = "sdmc:/luma/payloads/open_agb_firm.firm";
fRename( autorun, default_path ); fRename( autorun, default_path );
strncpy( firm_path, default_path, 0x40 ); strncpy( firm_path, default_path, 0x3f );
} }
firm_path[0x3f] = '\0';
} }
} }
Result oafPreboot( const char *firm_path ) Result oafPreboot( const char *firm_path )
{ {
ee_puts( firm_path ); // 记下来要恢复的文件名。加上\n是因为fsLoadPathFromFile靠它来识别路径结尾
char memo[0x50];
ee_snprintf(memo, 0x49, "%s\n", firm_path);
fsQuickWrite("autorun", memo, strlen(memo));
fsQuickWrite("autorun", firm_path, strlen(firm_path)); return fRename(firm_path, autorun);
Result ret = fRename(firm_path, autorun);
TIMER_sleepMs(500);
return ret;
} }