diff --git a/mozilla/content/html/style/src/nsCSSLoader.cpp b/mozilla/content/html/style/src/nsCSSLoader.cpp index 4d7ca1cf4e9..6d414b39e37 100644 --- a/mozilla/content/html/style/src/nsCSSLoader.cpp +++ b/mozilla/content/html/style/src/nsCSSLoader.cpp @@ -935,11 +935,11 @@ CSSLoaderImpl::DidLoadStyle(nsIStreamLoader* aLoader, } -typedef PRBool (*nsStringEnumFunc)(const nsString& aSubString, void *aData); +typedef nsresult (*nsStringEnumFunc)(const nsString& aSubString, void *aData); -static PRBool EnumerateMediaString(const nsString& aStringList, nsStringEnumFunc aFunc, void* aData) +static nsresult EnumerateMediaString(const nsString& aStringList, nsStringEnumFunc aFunc, void* aData) { - PRBool running = PR_TRUE; + nsresult status = NS_OK; nsAutoString stringList(aStringList); // copy to work buffer nsAutoString subStr; @@ -949,7 +949,7 @@ static PRBool EnumerateMediaString(const nsString& aStringList, nsStringEnumFunc PRUnichar* start = (PRUnichar*)(const PRUnichar*)stringList.GetUnicode(); PRUnichar* end = start; - while (running && (kNullCh != *start)) { + while (NS_SUCCEEDED(status) && (kNullCh != *start)) { PRBool quoted = PR_FALSE; while ((kNullCh != *start) && nsCRT::IsAsciiSpace(*start)) { // skip leading space @@ -997,31 +997,34 @@ static PRBool EnumerateMediaString(const nsString& aStringList, nsStringEnumFunc } if (0 < subStr.Length()) { - running = (*aFunc)(subStr, aData); + status = (*aFunc)(subStr, aData); } start = ++end; } - return running; + return status; } -static PRBool MediumEnumFunc(const nsString& aSubString, void* aData) +static nsresult MediumEnumFunc(const nsString& aSubString, void* aData) { nsIAtom* medium = NS_NewAtom(aSubString); + if (!medium) return NS_ERROR_OUT_OF_MEMORY; ((nsICSSStyleSheet*)aData)->AppendMedium(medium); - return PR_TRUE; + NS_RELEASE(medium); + return NS_OK; } nsresult CSSLoaderImpl::SetMedia(nsICSSStyleSheet* aSheet, const nsString& aMedia) { + nsresult rv = NS_OK; aSheet->ClearMedia(); if (0 < aMedia.Length()) { - EnumerateMediaString(aMedia, MediumEnumFunc, aSheet); + rv = EnumerateMediaString(aMedia, MediumEnumFunc, aSheet); } - return NS_OK; + return rv; } nsresult @@ -1442,8 +1445,10 @@ CSSLoaderImpl::LoadChildSheet(nsICSSStyleSheet* aParentSheet, nsICSSStyleSheet* clone = nsnull; result = sheet->Clone(clone); if (NS_SUCCEEDED(result)) { - SetMedia(clone, aMedia); - result = InsertChildSheet(clone, aParentSheet, aIndex); + result = SetMedia(clone, aMedia); + if (NS_SUCCEEDED(result)) { + result = InsertChildSheet(clone, aParentSheet, aIndex); + } NS_RELEASE(clone); } } diff --git a/mozilla/layout/html/style/src/nsCSSLoader.cpp b/mozilla/layout/html/style/src/nsCSSLoader.cpp index 4d7ca1cf4e9..6d414b39e37 100644 --- a/mozilla/layout/html/style/src/nsCSSLoader.cpp +++ b/mozilla/layout/html/style/src/nsCSSLoader.cpp @@ -935,11 +935,11 @@ CSSLoaderImpl::DidLoadStyle(nsIStreamLoader* aLoader, } -typedef PRBool (*nsStringEnumFunc)(const nsString& aSubString, void *aData); +typedef nsresult (*nsStringEnumFunc)(const nsString& aSubString, void *aData); -static PRBool EnumerateMediaString(const nsString& aStringList, nsStringEnumFunc aFunc, void* aData) +static nsresult EnumerateMediaString(const nsString& aStringList, nsStringEnumFunc aFunc, void* aData) { - PRBool running = PR_TRUE; + nsresult status = NS_OK; nsAutoString stringList(aStringList); // copy to work buffer nsAutoString subStr; @@ -949,7 +949,7 @@ static PRBool EnumerateMediaString(const nsString& aStringList, nsStringEnumFunc PRUnichar* start = (PRUnichar*)(const PRUnichar*)stringList.GetUnicode(); PRUnichar* end = start; - while (running && (kNullCh != *start)) { + while (NS_SUCCEEDED(status) && (kNullCh != *start)) { PRBool quoted = PR_FALSE; while ((kNullCh != *start) && nsCRT::IsAsciiSpace(*start)) { // skip leading space @@ -997,31 +997,34 @@ static PRBool EnumerateMediaString(const nsString& aStringList, nsStringEnumFunc } if (0 < subStr.Length()) { - running = (*aFunc)(subStr, aData); + status = (*aFunc)(subStr, aData); } start = ++end; } - return running; + return status; } -static PRBool MediumEnumFunc(const nsString& aSubString, void* aData) +static nsresult MediumEnumFunc(const nsString& aSubString, void* aData) { nsIAtom* medium = NS_NewAtom(aSubString); + if (!medium) return NS_ERROR_OUT_OF_MEMORY; ((nsICSSStyleSheet*)aData)->AppendMedium(medium); - return PR_TRUE; + NS_RELEASE(medium); + return NS_OK; } nsresult CSSLoaderImpl::SetMedia(nsICSSStyleSheet* aSheet, const nsString& aMedia) { + nsresult rv = NS_OK; aSheet->ClearMedia(); if (0 < aMedia.Length()) { - EnumerateMediaString(aMedia, MediumEnumFunc, aSheet); + rv = EnumerateMediaString(aMedia, MediumEnumFunc, aSheet); } - return NS_OK; + return rv; } nsresult @@ -1442,8 +1445,10 @@ CSSLoaderImpl::LoadChildSheet(nsICSSStyleSheet* aParentSheet, nsICSSStyleSheet* clone = nsnull; result = sheet->Clone(clone); if (NS_SUCCEEDED(result)) { - SetMedia(clone, aMedia); - result = InsertChildSheet(clone, aParentSheet, aIndex); + result = SetMedia(clone, aMedia); + if (NS_SUCCEEDED(result)) { + result = InsertChildSheet(clone, aParentSheet, aIndex); + } NS_RELEASE(clone); } } diff --git a/mozilla/layout/style/nsCSSLoader.cpp b/mozilla/layout/style/nsCSSLoader.cpp index 4d7ca1cf4e9..6d414b39e37 100644 --- a/mozilla/layout/style/nsCSSLoader.cpp +++ b/mozilla/layout/style/nsCSSLoader.cpp @@ -935,11 +935,11 @@ CSSLoaderImpl::DidLoadStyle(nsIStreamLoader* aLoader, } -typedef PRBool (*nsStringEnumFunc)(const nsString& aSubString, void *aData); +typedef nsresult (*nsStringEnumFunc)(const nsString& aSubString, void *aData); -static PRBool EnumerateMediaString(const nsString& aStringList, nsStringEnumFunc aFunc, void* aData) +static nsresult EnumerateMediaString(const nsString& aStringList, nsStringEnumFunc aFunc, void* aData) { - PRBool running = PR_TRUE; + nsresult status = NS_OK; nsAutoString stringList(aStringList); // copy to work buffer nsAutoString subStr; @@ -949,7 +949,7 @@ static PRBool EnumerateMediaString(const nsString& aStringList, nsStringEnumFunc PRUnichar* start = (PRUnichar*)(const PRUnichar*)stringList.GetUnicode(); PRUnichar* end = start; - while (running && (kNullCh != *start)) { + while (NS_SUCCEEDED(status) && (kNullCh != *start)) { PRBool quoted = PR_FALSE; while ((kNullCh != *start) && nsCRT::IsAsciiSpace(*start)) { // skip leading space @@ -997,31 +997,34 @@ static PRBool EnumerateMediaString(const nsString& aStringList, nsStringEnumFunc } if (0 < subStr.Length()) { - running = (*aFunc)(subStr, aData); + status = (*aFunc)(subStr, aData); } start = ++end; } - return running; + return status; } -static PRBool MediumEnumFunc(const nsString& aSubString, void* aData) +static nsresult MediumEnumFunc(const nsString& aSubString, void* aData) { nsIAtom* medium = NS_NewAtom(aSubString); + if (!medium) return NS_ERROR_OUT_OF_MEMORY; ((nsICSSStyleSheet*)aData)->AppendMedium(medium); - return PR_TRUE; + NS_RELEASE(medium); + return NS_OK; } nsresult CSSLoaderImpl::SetMedia(nsICSSStyleSheet* aSheet, const nsString& aMedia) { + nsresult rv = NS_OK; aSheet->ClearMedia(); if (0 < aMedia.Length()) { - EnumerateMediaString(aMedia, MediumEnumFunc, aSheet); + rv = EnumerateMediaString(aMedia, MediumEnumFunc, aSheet); } - return NS_OK; + return rv; } nsresult @@ -1442,8 +1445,10 @@ CSSLoaderImpl::LoadChildSheet(nsICSSStyleSheet* aParentSheet, nsICSSStyleSheet* clone = nsnull; result = sheet->Clone(clone); if (NS_SUCCEEDED(result)) { - SetMedia(clone, aMedia); - result = InsertChildSheet(clone, aParentSheet, aIndex); + result = SetMedia(clone, aMedia); + if (NS_SUCCEEDED(result)) { + result = InsertChildSheet(clone, aParentSheet, aIndex); + } NS_RELEASE(clone); } }