From 98ae1ef3ec38165110aad6a20deb8ebeaec5f421 Mon Sep 17 00:00:00 2001 From: Taras Glek Date: Wed, 26 Aug 2009 09:38:25 -0700 Subject: [PATCH] Bug 512515. Let JAR channels report 'file not found' when the file isn't found in the JAR file. r=bsmedberg --HG-- extra : rebase_source : bc52f7c34fe08c755d17ca5b3587807d63f34a14 --- modules/libjar/nsJARChannel.cpp | 3 ++- modules/libjar/test/unit/test_not_found.js | 18 ++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 modules/libjar/test/unit/test_not_found.js 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") + } +}