If frontend::CompileScript returns NULL because of OOM, Process() in js.cpp will continue merrily on its way and no one ever calls JS_ReportOutOfMemory(). Is it the responsibility of the JS API to call JS_ReportOutOfMemory() or the shell?
This is not as clear cut as a thought. Parts of the compiler that allocate things do call js_ReportOutOfMemory(). However, if you accidentally return NULL from the compiler with no error set, nothing gets spit out. It would be nice to have something fail when that happens. I'll try to devise a patch.
Summary: shell swallows OOM errors from the compiler → shell swallows compiler bugs
Created attachment 627012 [details] [diff] [review] complains when the compiler returns NULL and doesn't report an error
Attachment #627012 - Flags: review?(jorendorff)
Comment on attachment 627012 [details] [diff] [review] complains when the compiler returns NULL and doesn't report an error >+JSBool gGotError = JS_FALSE; In new code, use C++ bool, false, and true. (unless you have to match a function signature, or matching is the nicest way to avoid stupid C++ warnings, but that's not an issue here) >+ if (!script) >+ JS_ASSERT(gGotError); JS_ASSERT_IF(!script, gGotError);
Attachment #627012 - Flags: review?(jorendorff) → review+
Created attachment 628437 [details] [diff] [review] address review comments
Assignee: general → bpeterson
Attachment #627012 - Attachment is obsolete: true
Created attachment 628439 [details] [diff] [review] use JS_ASSERT_IF
Attachment #628437 - Attachment is obsolete: true
Status: NEW → RESOLVED
Last Resolved: 7 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla15
You need to log in before you can comment on or make changes to this bug.