diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/library_browser.js | 10 | ||||
| -rw-r--r-- | src/postamble.js | 10 | 
2 files changed, 18 insertions, 2 deletions
diff --git a/src/library_browser.js b/src/library_browser.js index 235ccc78..e4966e15 100644 --- a/src/library_browser.js +++ b/src/library_browser.js @@ -724,7 +724,15 @@ mergeInto(LibraryManager.library, {          Module['preMainLoop']();        } -      Runtime.dynCall('v', func); +      try { +        Runtime.dynCall('v', func); +      } catch (e) { +        if (e instanceof ExitStatus) { +          return; +        } else { +          throw e; +        } +      }        if (Module['postMainLoop']) {          Module['postMainLoop'](); diff --git a/src/postamble.js b/src/postamble.js index d3212767..94b60288 100644 --- a/src/postamble.js +++ b/src/postamble.js @@ -128,7 +128,15 @@ function exit(status) {    // exit the runtime    exitRuntime(); -  + +  // TODO We should handle this differently based on environment. +  // In the browser, the best we can do is throw an exception +  // to halt execution, but in node we could process.exit and +  // I'd imagine SM shell would have something equivalent. +  // This would let us set a proper exit status (which +  // would be great for checking test exit statuses). +  // https://github.com/kripken/emscripten/issues/1371 +    // throw an exception to halt the current execution    throw new ExitStatus(status);  }  | 
