diff --git a/image/decoders/icon/nsIconURI.cpp b/image/decoders/icon/nsIconURI.cpp index 3ae683590e44..1da535a2c78b 100644 --- a/image/decoders/icon/nsIconURI.cpp +++ b/image/decoders/icon/nsIconURI.cpp @@ -418,8 +418,11 @@ nsMozIconURI::EqualsExceptRef(nsIURI* other, bool* result) { NS_IMETHODIMP nsMozIconURI::SchemeIs(const char* aScheme, bool* aEquals) { - MOZ_ASSERT(aScheme); MOZ_ASSERT(aEquals, "null pointer"); + if (!aScheme) { + *aEquals = false; + return NS_OK; + } *aEquals = PL_strcasecmp("moz-icon", aScheme) ? false : true; return NS_OK; diff --git a/modules/libjar/nsJARURI.cpp b/modules/libjar/nsJARURI.cpp index 5b8ebc89adc2..628cec45433b 100644 --- a/modules/libjar/nsJARURI.cpp +++ b/modules/libjar/nsJARURI.cpp @@ -475,8 +475,11 @@ nsJARURI::EqualsExceptRef(nsIURI *other, bool *result) { NS_IMETHODIMP nsJARURI::SchemeIs(const char *i_Scheme, bool *o_Equals) { - MOZ_ASSERT(i_Scheme); MOZ_ASSERT(o_Equals); + if (!i_Scheme) { + *o_Equals = false; + return NS_OK; + } *o_Equals = PL_strcasecmp("jar", i_Scheme) ? false : true; return NS_OK; diff --git a/netwerk/base/nsSimpleURI.cpp b/netwerk/base/nsSimpleURI.cpp index 72d0995c7d24..605fec3043fa 100644 --- a/netwerk/base/nsSimpleURI.cpp +++ b/netwerk/base/nsSimpleURI.cpp @@ -523,8 +523,11 @@ bool nsSimpleURI::EqualsInternal(nsSimpleURI *otherUri, NS_IMETHODIMP nsSimpleURI::SchemeIs(const char *i_Scheme, bool *o_Equals) { - MOZ_ASSERT(i_Scheme); MOZ_ASSERT(o_Equals, "null pointer"); + if (!i_Scheme) { + *o_Equals = false; + return NS_OK; + } const char *this_scheme = mScheme.get(); diff --git a/netwerk/base/nsStandardURL.cpp b/netwerk/base/nsStandardURL.cpp index b5c371b2aa01..5a0222e0b957 100644 --- a/netwerk/base/nsStandardURL.cpp +++ b/netwerk/base/nsStandardURL.cpp @@ -2204,8 +2204,11 @@ nsresult nsStandardURL::EqualsInternal( NS_IMETHODIMP nsStandardURL::SchemeIs(const char *scheme, bool *result) { - MOZ_ASSERT(scheme); MOZ_ASSERT(result, "null pointer"); + if (!scheme) { + *result = false; + return NS_OK; + } *result = SegmentIs(mScheme, scheme); return NS_OK; diff --git a/netwerk/test/unit/test_URIs.js b/netwerk/test/unit/test_URIs.js index 52169a64628a..2384cea110db 100644 --- a/netwerk/test/unit/test_URIs.js +++ b/netwerk/test/unit/test_URIs.js @@ -610,12 +610,27 @@ function check_space_escaping() uri = gIoService.newURI("http://example.com/test%20path#test%20path"); } +function check_schemeIsNull() +{ + let uri = gIoService.newURI("data:text/plain,aaa"); + Assert.ok(!uri.schemeIs(null)); + uri = gIoService.newURI("http://example.com"); + Assert.ok(!uri.schemeIs(null)); + uri = gIoService.newURI("dummyscheme://example.com"); + Assert.ok(!uri.schemeIs(null)); + uri = gIoService.newURI("jar:resource://gre/chrome.toolkit.jar!/"); + Assert.ok(!uri.schemeIs(null)); + uri = gIoService.newURI("moz-icon://.unknown?size=32"); + Assert.ok(!uri.schemeIs(null)); +} + // TEST MAIN FUNCTION // ------------------ function run_test() { check_nested_mutations(); check_space_escaping(); + check_schemeIsNull(); // UTF-8 check - From bug 622981 // ASCII