From 844f72fe674fa07698da95dbc950548692fd60be Mon Sep 17 00:00:00 2001 From: plutoo Date: Sat, 13 Jan 2018 00:43:38 +0100 Subject: [PATCH] Panic if any initialization fails --- nx/include/switch/result.h | 4 ++++ nx/source/runtime/init.c | 24 ++++++++++++++++++------ 2 files changed, 22 insertions(+), 6 deletions(-) diff --git a/nx/include/switch/result.h b/nx/include/switch/result.h index 4ce799a7..07e82e99 100644 --- a/nx/include/switch/result.h +++ b/nx/include/switch/result.h @@ -36,4 +36,8 @@ enum { LIBNX_HEAPALLOCFAILED, LIBNX_TOOMANYOVERRIDES, LIBNX_PARCELERROR, + LIBNX_INITFAIL_SM, + LIBNX_INITFAIL_AM, + LIBNX_INITFAIL_HID, + LIBNX_INITFAIL_FS }; diff --git a/nx/source/runtime/init.c b/nx/source/runtime/init.c index 585ded30..9f9cf076 100644 --- a/nx/source/runtime/init.c +++ b/nx/source/runtime/init.c @@ -61,12 +61,25 @@ void __attribute__((weak)) __libnx_initheap(void) void __attribute__((weak)) __appInit(void) { - // Initialize default services. - smInitialize(); - appletInitialize(); - hidInitialize(); + Result rc; + + // Initialize default services. + rc = smInitialize(); + if (R_FAILED(rc)) + fatalSimple(MAKERESULT(MODULE_LIBNX, LIBNX_INITFAIL_SM)); + + rc = appletInitialize(); + if (R_FAILED(rc)) + fatalSimple(MAKERESULT(MODULE_LIBNX, LIBNX_INITFAIL_AM)); + + rc = hidInitialize(); + if (R_FAILED(rc)) + fatalSimple(MAKERESULT(MODULE_LIBNX, LIBNX_INITFAIL_HID)); + + rc = fsInitialize(); + if (R_FAILED(rc)) + fatalSimple(MAKERESULT(MODULE_LIBNX, LIBNX_INITFAIL_FS)); - fsInitialize(); //fsdevInit(); } @@ -75,7 +88,6 @@ void __attribute__((weak)) __appExit(void) // Cleanup default services. //fsdevExit(); fsExit(); - hidExit(); appletExit(); smExit();