diff --git a/nx/include/switch/applets/swkbd.h b/nx/include/switch/applets/swkbd.h index d139f185..cc8e77bf 100644 --- a/nx/include/switch/applets/swkbd.h +++ b/nx/include/switch/applets/swkbd.h @@ -197,12 +197,13 @@ typedef struct { s32 unk_x20; s32 unk_x24; u8 returnButtonFlag; ///< Controls whether the Return button is enabled, for newlines input. 0 = disabled, non-zero = enabled. - u16 unk_x29; + u8 unk_x29; + u8 unk_x2a; u8 unk_x2b; u32 flags; ///< Bitmask 0x4: unknown. u8 unk_x30; u8 unk_x31[0x17]; -} PACKED SwkbdAppearArg; +} SwkbdAppearArg; typedef struct { u32 unk_x0; @@ -226,7 +227,8 @@ typedef struct { u8 disableTouch; ///< Flags bitmask 0x200. u8 disableUSBKeyboard; ///< Flags bitmask 0x800. u8 unk_x468[5]; - u16 unk_x46d; + u8 unk_x46d; + u8 unk_x46e; u8 unk_x46f; float keytopScaleX; ///< Flags bitmask 0x200. float keytopScaleY; ///< Flags bitmask 0x200. @@ -241,7 +243,7 @@ typedef struct { u8 triggerFlag; ///< [6.0.0+] Enables using the trigger field when set. u8 trigger; ///< [6.0.0+] Trigger u8 pad_x49f; -} PACKED SwkbdInlineCalcArg; +} SwkbdInlineCalcArg; /// Struct data for SwkbdInline Interactive reply storage ChangedString*, at the end following the string. typedef struct { diff --git a/nx/include/switch/sf/service.h b/nx/include/switch/sf/service.h index e183db43..0c3cc154 100644 --- a/nx/include/switch/sf/service.h +++ b/nx/include/switch/sf/service.h @@ -160,11 +160,10 @@ NX_CONSTEXPR void serviceCreateDomainSubservice(Service* s, Service* parent, u32 * @brief Hints the compiler that a service will always contain a domain object. * @param[in] s Service object. */ -NX_CONSTEXPR void serviceAssumeDomain(Service* s) -{ - if (!s->object_id) - __builtin_unreachable(); -} +#define serviceAssumeDomain(_s) do { \ + if (!(_s)->object_id) \ + __builtin_unreachable(); \ +} while(0) /** * @brief Closes a service. diff --git a/nx/source/applets/error.c b/nx/source/applets/error.c index a5df8326..ac7bc7c9 100644 --- a/nx/source/applets/error.c +++ b/nx/source/applets/error.c @@ -214,7 +214,9 @@ Result errorSystemCreate(ErrorSystemConfig* c, const char* dialog_message, const if (hosversionBefore(5,0,0)) { rc = setInitialize(); - if (R_SUCCEEDED(rc)) rc = setMakeLanguageCode(SetLanguage_ENUS, &c->arg.languageCode); + u64 languageCode = 0; + if (R_SUCCEEDED(rc)) rc = setMakeLanguageCode(SetLanguage_ENUS, &languageCode); + if (R_SUCCEEDED(rc)) c->arg.languageCode = languageCode; setExit(); } @@ -247,7 +249,9 @@ Result errorApplicationCreate(ErrorApplicationConfig* c, const char* dialog_mess if (hosversionBefore(5,0,0)) { rc = setInitialize(); - if (R_SUCCEEDED(rc)) rc = setMakeLanguageCode(SetLanguage_ENUS, &c->arg.languageCode); + u64 languageCode = 0; + if (R_SUCCEEDED(rc)) rc = setMakeLanguageCode(SetLanguage_ENUS, &languageCode); + if (R_SUCCEEDED(rc)) c->arg.languageCode = languageCode; setExit(); } diff --git a/nx/source/runtime/argv.c b/nx/source/runtime/argv.c index 6796621b..00c0346e 100644 --- a/nx/source/runtime/argv.c +++ b/nx/source/runtime/argv.c @@ -15,7 +15,7 @@ struct in_addr __nxlink_host; extern char* fake_heap_start; extern char* fake_heap_end; -extern u32 __argdata__; +extern u8 __argdata__[]; static char* g_argv_empty = NULL; @@ -27,7 +27,7 @@ void argvSetup(void) MemoryInfo meminfo; u32 pageinfo=0; - u8 *argdata = (u8*)&__argdata__; + u8 *argdata = __argdata__; u32 *arg32 = (u32*)argdata; u64 argdata_allocsize=0; u64 argdata_strsize=0; @@ -94,7 +94,7 @@ void argvSetup(void) argstart = NULL; for(argi=0; argi