1
0
mirror of https://github.com/RPCS3/rpcs3.git synced 2024-11-26 04:32:35 +01:00

sceNpCustomMenu: improvements

This commit is contained in:
Megamouse 2021-10-11 23:22:19 +02:00
parent 80ef348600
commit 8f328b2624
2 changed files with 29 additions and 8 deletions

View File

@ -2165,11 +2165,29 @@ error_code sceNpCustomMenuRegisterActions(vm::cptr<SceNpCustomMenu> menu, vm::pt
return SCE_NP_CUSTOM_MENU_ERROR_NOT_INITIALIZED; return SCE_NP_CUSTOM_MENU_ERROR_NOT_INITIALIZED;
} }
if (!menu || !handler) if (!menu || !handler) // TODO: handler check might come later
{ {
return SCE_NP_CUSTOM_MENU_ERROR_INVALID_ARGUMENT; return SCE_NP_CUSTOM_MENU_ERROR_INVALID_ARGUMENT;
} }
if (menu->numActions > SCE_NP_CUSTOM_MENU_ACTION_ITEMS_TOTAL_MAX)
{
return SCE_NP_CUSTOM_MENU_ERROR_EXCEEDS_MAX;
}
for (u32 i = 0; i < menu->numActions; i++)
{
if (!menu->actions[i].name)
{
return SCE_NP_CUSTOM_MENU_ERROR_INVALID_ARGUMENT;
}
if (!memchr(menu->actions[i].name.get_ptr(), '\0', SCE_NP_CUSTOM_MENU_ACTION_CHARACTER_MAX))
{
return SCE_NP_CUSTOM_MENU_ERROR_EXCEEDS_MAX;
}
}
return CELL_OK; return CELL_OK;
} }
@ -2184,6 +2202,8 @@ error_code sceNpCustomMenuActionSetActivation(vm::cptr<SceNpCustomMenuIndexArray
return SCE_NP_CUSTOM_MENU_ERROR_NOT_INITIALIZED; return SCE_NP_CUSTOM_MENU_ERROR_NOT_INITIALIZED;
} }
// TODO: SCE_NP_CUSTOM_MENU_ERROR_NOT_REGISTERED
if (!array) if (!array)
{ {
return SCE_NP_CUSTOM_MENU_ERROR_INVALID_ARGUMENT; return SCE_NP_CUSTOM_MENU_ERROR_INVALID_ARGUMENT;
@ -2203,17 +2223,18 @@ error_code sceNpCustomMenuRegisterExceptionList(vm::cptr<SceNpCustomMenuActionEx
return SCE_NP_CUSTOM_MENU_ERROR_NOT_INITIALIZED; return SCE_NP_CUSTOM_MENU_ERROR_NOT_INITIALIZED;
} }
// TODO: SCE_NP_CUSTOM_MENU_ERROR_NOT_REGISTERED
if (numItems > SCE_NP_CUSTOM_MENU_EXCEPTION_ITEMS_MAX)
{
return SCE_NP_CUSTOM_MENU_ERROR_EXCEEDS_MAX;
}
if (!items) if (!items)
{ {
return SCE_NP_CUSTOM_MENU_ERROR_INVALID_ARGUMENT; return SCE_NP_CUSTOM_MENU_ERROR_INVALID_ARGUMENT;
} }
if (numItems > SCE_NP_CUSTOM_MENU_ACTION_ITEMS_MAX)
{
// TODO: what about SCE_NP_CUSTOM_MENU_ACTION_ITEMS_TOTAL_MAX
return SCE_NP_CUSTOM_MENU_ERROR_EXCEEDS_MAX;
}
return CELL_OK; return CELL_OK;
} }

View File

@ -1205,7 +1205,7 @@ struct SceNpSignalingNetInfo
struct SceNpCustomMenuAction struct SceNpCustomMenuAction
{ {
be_t<u32> options; be_t<u32> options;
char name[SCE_NP_CUSTOM_MENU_ACTION_CHARACTER_MAX]; vm::bcptr<char> name;
be_t<SceNpCustomMenuActionMask> mask; be_t<SceNpCustomMenuActionMask> mask;
}; };