diff --git a/modules/libjar/nsJARChannel.cpp b/modules/libjar/nsJARChannel.cpp index 7828dd0267f9..47b61cc78a8b 100644 --- a/modules/libjar/nsJARChannel.cpp +++ b/modules/libjar/nsJARChannel.cpp @@ -672,7 +672,8 @@ nsJARChannel::Open(nsIInputStream **stream) // force load the jar file now so GetContentLength will return a // meaningful value once we return. - mJarInput->EnsureJarStream(); + rv = mJarInput->EnsureJarStream(); + if (NS_FAILED(rv)) return rv; NS_ADDREF(*stream = mJarInput); return NS_OK; diff --git a/modules/libjar/test/unit/test_not_found.js b/modules/libjar/test/unit/test_not_found.js new file mode 100644 index 000000000000..58fb2fe65121 --- /dev/null +++ b/modules/libjar/test/unit/test_not_found.js @@ -0,0 +1,18 @@ +// Should report file not found on non-existent files + +const Cc = Components.classes; +const Ci = Components.interfaces; +const path = "data/test_bug333423.zip"; + +function run_test() { + var ios = Cc["@mozilla.org/network/io-service;1"]. + getService(Ci.nsIIOService); + var spec = "jar:" + ios.newFileURI(do_get_file(path)).spec + "!/"; + var channel = ios.newChannel(spec + "file_that_isnt_in.archive", null, null); + try { + instr = channel.open(); + do_throw("Failed to report that file doesn't exist") + } catch (e) { + do_check_true(e.name == "NS_ERROR_FILE_NOT_FOUND") + } +}