diff --git a/binfmt/nxflat.c b/binfmt/nxflat.c index f4eac0fcf3a..0c179053a6d 100644 --- a/binfmt/nxflat.c +++ b/binfmt/nxflat.c @@ -158,7 +158,7 @@ static int nxflat_loadbinary(struct binary_s *binp) if (ret != 0) { bdbg("Failed to initialize for load of NXFLT program: %d\n", ret); - return ret; + goto errout; } /* Load the program binary */ @@ -168,8 +168,7 @@ static int nxflat_loadbinary(struct binary_s *binp) if (ret != 0) { bdbg("Failed to load NXFLT program binary: %d\n", ret); - nxflat_uninit(&loadinfo); - return ret; + goto errout_with_init; } /* Bind the program to the exported symbol table */ @@ -178,8 +177,7 @@ static int nxflat_loadbinary(struct binary_s *binp) if (ret != 0) { bdbg("Failed to bind symbols program binary: %d\n", ret); - nxflat_uninit(&loadinfo); - return ret; + goto errout_with_load; } /* Return the load information */ @@ -192,8 +190,16 @@ static int nxflat_loadbinary(struct binary_s *binp) nxflat_dumpbuffer("Entry code", (FAR const ubyte*)binp->entrypt, MIN(binp->isize - loadinfo.entryoffs,512)); + nxflat_uninit(&loadinfo); return OK; + +errout_with_load: + nxflat_unload(&loadinfo); +errout_with_init: + nxflat_uninit(&loadinfo); +errout: + return ret; } /*********************************************************************** diff --git a/examples/nxflat/tests/Makefile b/examples/nxflat/tests/Makefile index 1a7c64ef6df..638b2548ceb 100644 --- a/examples/nxflat/tests/Makefile +++ b/examples/nxflat/tests/Makefile @@ -82,7 +82,7 @@ $(ROMFS_IMG): populate # Create the romfs.h header file from the romfs.img file $(ROMFS_HDR) : $(ROMFS_IMG) - @(cd $(TESTS_DIR); xxd -i romfs.img >$@) + @(cd $(TESTS_DIR); xxd -i romfs.img | sed -e "s/^unsigned/static const unsigned/g" >$@) # Create the dirlist.h header file from the romfs directory