Chakratos / mhf-save-manager

A Webapplication to manage Character saves used by the MHF Server emulator Erupe
51 stars 10 forks source link

1.7.4 Fails when User points are null (default) #23

Closed Kabutak closed 1 year ago

Kabutak commented 1 year ago

The latest release fails to load a character for editing if any of the user point values (Frontier points, Trial Gacha, etc.) are null. This makes sense since it is expecting an int, but they default to null on new user creation and have no constraints preventing that. Editing those values to be a number fixes the issue as expected.

Should be resolved with a simple set of null checks to prevent failure on startup. Resolved in PR #24

Error logs to help identify the culprit lines: ``` Fatal error: Uncaught TypeError: MHFSaveManager\Model\User::getGachatrial(): Return value must be of type int, null returned in C:\Users\Kabutak\Desktop\MHFSaveManager\www\app\Model\User.php:299 Stack trace: #0 C:\Users\Kabutak\Desktop\MHFSaveManager\www\app\Controller\CharacterController.php(35): MHFSaveManager\Model\User->getGachatrial() #1 C:\Users\Kabutak\Desktop\MHFSaveManager\www\app\routes.php(159): MHFSaveManager\Controller\CharacterController::Edit(Object(MHFSaveManager\Model\Character)) #2 [internal function]: {closure}('3') #3 C:\Users\Kabutak\Desktop\MHFSaveManager\www\vendor\pecee\simple-router\src\Pecee\SimpleRouter\ClassLoader\ClassLoader.php(46): call_user_func_array(Object(Closure), Array) #4 C:\Users\Kabutak\Desktop\MHFSaveManager\www\vendor\pecee\simple-router\src\Pecee\SimpleRouter\Route\Route.php(95): Pecee\SimpleRouter\ClassLoader\ClassLoader->loadClosure(Object(Closure), Array) #5 C:\Users\Kabutak\Desktop\MHFSaveManager\www\vendor\pecee\simple-router\src\Pecee\SimpleRouter\Router.php(424): Pecee\SimpleRouter\Route\Route->renderRoute(Object(Pecee\Http\Request), Object(Pecee\SimpleRouter\Router)) #6 C:\Users\Kabutak\Desktop\MHFSaveManager\www\vendor\pecee\simple-router\src\Pecee\SimpleRouter\Router.php(345): Pecee\SimpleRouter\Router->routeRequest() #7 C:\Users\Kabutak\Desktop\MHFSaveManager\www\vendor\pecee\simple-router\src\Pecee\SimpleRouter\SimpleRouter.php(71): Pecee\SimpleRouter\Router->start() #8 C:\Users\Kabutak\Desktop\MHFSaveManager\www\public\index.php(16): Pecee\SimpleRouter\SimpleRouter::start() #9 {main} thrown in C:\Users\Kabutak\Desktop\MHFSaveManager\www\app\Model\User.php on line 299 ``` ``` Fatal error: Uncaught TypeError: MHFSaveManager\Model\User::getFrontierpoints(): Return value must be of type int, null returned in C:\Users\Kabutak\Desktop\MHFSaveManager\www\app\Model\User.php:318 Stack trace: #0 C:\Users\Kabutak\Desktop\MHFSaveManager\www\app\Controller\CharacterController.php(37): MHFSaveManager\Model\User->getFrontierpoints() #1 C:\Users\Kabutak\Desktop\MHFSaveManager\www\app\routes.php(159): MHFSaveManager\Controller\CharacterController::Edit(Object(MHFSaveManager\Model\Character)) #2 [internal function]: {closure}('1') #3 C:\Users\Kabutak\Desktop\MHFSaveManager\www\vendor\pecee\simple-router\src\Pecee\SimpleRouter\ClassLoader\ClassLoader.php(46): call_user_func_array(Object(Closure), Array) #4 C:\Users\Kabutak\Desktop\MHFSaveManager\www\vendor\pecee\simple-router\src\Pecee\SimpleRouter\Route\Route.php(95): Pecee\SimpleRouter\ClassLoader\ClassLoader->loadClosure(Object(Closure), Array) #5 C:\Users\Kabutak\Desktop\MHFSaveManager\www\vendor\pecee\simple-router\src\Pecee\SimpleRouter\Router.php(424): Pecee\SimpleRouter\Route\Route->renderRoute(Object(Pecee\Http\Request), Object(Pecee\SimpleRouter\Router)) #6 C:\Users\Kabutak\Desktop\MHFSaveManager\www\vendor\pecee\simple-router\src\Pecee\SimpleRouter\Router.php(345): Pecee\SimpleRouter\Router->routeRequest() #7 C:\Users\Kabutak\Desktop\MHFSaveManager\www\vendor\pecee\simple-router\src\Pecee\SimpleRouter\SimpleRouter.php(71): Pecee\SimpleRouter\Router->start() #8 C:\Users\Kabutak\Desktop\MHFSaveManager\www\public\index.php(16): Pecee\SimpleRouter\SimpleRouter::start() #9 {main} thrown in C:\Users\Kabutak\Desktop\MHFSaveManager\www\app\Model\User.php on line 318 ```
Chakratos commented 1 year ago

Thank you very much for reporting this in such great detail! I just pushed a new release that has this issue fixed :)