Bug 502711 - imgITools cannot decode images stored in JARs r=joe

--HG--
extra : rebase_source : 002851f48d458d7ab0a4bbf87fd79fc893c425cb
This commit is contained in:
Rob Arnold 2009-07-21 15:57:25 -07:00
parent 7ba9615f7a
commit ab58aae54b

View File

@ -51,6 +51,8 @@
#include "nsComponentManagerUtils.h"
#include "nsWeakReference.h"
#include "nsIInterfaceRequestorUtils.h"
#include "nsStreamUtils.h"
#include "nsNetUtil.h"
/* ========== Utility classes ========== */
@ -220,12 +222,20 @@ NS_IMETHODIMP imgTools::DecodeImageData(nsIInputStream* aInStr,
rv = decoder->Init(loader);
NS_ENSURE_SUCCESS(rv, rv);
nsCOMPtr<nsIInputStream> inStream = aInStr;
if (!NS_InputStreamIsBuffered(aInStr)) {
nsCOMPtr<nsIInputStream> bufStream;
rv = NS_NewBufferedInputStream(getter_AddRefs(bufStream), aInStr, 1024);
if (NS_SUCCEEDED(rv))
inStream = bufStream;
}
PRUint32 length;
rv = aInStr->Available(&length);
rv = inStream->Available(&length);
NS_ENSURE_SUCCESS(rv, rv);
PRUint32 written;
rv = decoder->WriteFrom(aInStr, length, &written);
rv = decoder->WriteFrom(inStream, length, &written);
NS_ENSURE_SUCCESS(rv, rv);
if (written != length)
NS_WARNING("decoder didn't eat all of its vegetables");