diff --git a/mozilla/content/html/style/src/nsCSSLoader.cpp b/mozilla/content/html/style/src/nsCSSLoader.cpp
index 410a8d2df26..7a9b70b6c68 100644
--- a/mozilla/content/html/style/src/nsCSSLoader.cpp
+++ b/mozilla/content/html/style/src/nsCSSLoader.cpp
@@ -1534,17 +1534,31 @@ CSSLoaderImpl::LoadSheet(SheetLoadData* aLoadData, StyleSheetState aSheetState)
return rv;
}
- nsCOMPtr unicharStream;
- // This forces UA sheets to be UTF8, but that's ok, right?
- rv = NS_NewUTF8ConverterStream(getter_AddRefs(unicharStream), stream, 0);
+ nsCOMPtr converterStream =
+ do_CreateInstance("@mozilla.org/intl/converter-input-stream;1", &rv);
+
if (NS_FAILED(rv)) {
- LOG_ERROR((" Failed to create UTF8 stream"));
+ LOG_ERROR((" Failed to create converter stream"));
+ SheetComplete(aLoadData, PR_FALSE);
+ return rv;
+ }
+
+ // This forces UA sheets to be UTF-8. We should really look for
+ // @charset rules here via ReadSegments on the raw stream...
+
+ // 8092 is a nice magic number that happens to be what a lot of
+ // other things use for buffer sizes.
+ rv = converterStream->Init(stream, NS_LITERAL_STRING("UTF-8").get(),
+ 8092, PR_TRUE);
+
+ if (NS_FAILED(rv)) {
+ LOG_ERROR((" Failed to initialize converter stream"));
SheetComplete(aLoadData, PR_FALSE);
return rv;
}
PRBool completed;
- rv = ParseSheet(unicharStream, aLoadData, completed);
+ rv = ParseSheet(converterStream, aLoadData, completed);
NS_ASSERTION(completed, "sync load did not complete");
return rv;
}
diff --git a/mozilla/layout/style/nsCSSLoader.cpp b/mozilla/layout/style/nsCSSLoader.cpp
index 410a8d2df26..7a9b70b6c68 100644
--- a/mozilla/layout/style/nsCSSLoader.cpp
+++ b/mozilla/layout/style/nsCSSLoader.cpp
@@ -1534,17 +1534,31 @@ CSSLoaderImpl::LoadSheet(SheetLoadData* aLoadData, StyleSheetState aSheetState)
return rv;
}
- nsCOMPtr unicharStream;
- // This forces UA sheets to be UTF8, but that's ok, right?
- rv = NS_NewUTF8ConverterStream(getter_AddRefs(unicharStream), stream, 0);
+ nsCOMPtr converterStream =
+ do_CreateInstance("@mozilla.org/intl/converter-input-stream;1", &rv);
+
if (NS_FAILED(rv)) {
- LOG_ERROR((" Failed to create UTF8 stream"));
+ LOG_ERROR((" Failed to create converter stream"));
+ SheetComplete(aLoadData, PR_FALSE);
+ return rv;
+ }
+
+ // This forces UA sheets to be UTF-8. We should really look for
+ // @charset rules here via ReadSegments on the raw stream...
+
+ // 8092 is a nice magic number that happens to be what a lot of
+ // other things use for buffer sizes.
+ rv = converterStream->Init(stream, NS_LITERAL_STRING("UTF-8").get(),
+ 8092, PR_TRUE);
+
+ if (NS_FAILED(rv)) {
+ LOG_ERROR((" Failed to initialize converter stream"));
SheetComplete(aLoadData, PR_FALSE);
return rv;
}
PRBool completed;
- rv = ParseSheet(unicharStream, aLoadData, completed);
+ rv = ParseSheet(converterStream, aLoadData, completed);
NS_ASSERTION(completed, "sync load did not complete");
return rv;
}