summaryrefslogtreecommitdiffstats
path: root/netwerk/base/nsStreamLoader.cpp
diff options
context:
space:
mode:
authorMoonchild <moonchild@palemoon.org>2020-10-23 08:10:01 +0000
committerMoonchild <moonchild@palemoon.org>2020-10-23 08:10:01 +0000
commit28119b040d73e1e2c70ed18342a1eeca3c847293 (patch)
tree9c34e8e81f45e604de1cb14c21c40335dd906dac /netwerk/base/nsStreamLoader.cpp
parent3b224b2b26a553e575ebee805e3cc74c8f35e4b3 (diff)
downloadUXP-28119b040d73e1e2c70ed18342a1eeca3c847293.tar
UXP-28119b040d73e1e2c70ed18342a1eeca3c847293.tar.gz
UXP-28119b040d73e1e2c70ed18342a1eeca3c847293.tar.lz
UXP-28119b040d73e1e2c70ed18342a1eeca3c847293.tar.xz
UXP-28119b040d73e1e2c70ed18342a1eeca3c847293.zip
[netwerk] Make nsIncrementalStreamLoader's GetNumBytesRead threadsafe.
This prevents a potential race and simplifies the code a bit by keeping the bytes read separate instead of using mData, which is modified from another thread from OnDataAvailable. Relaxed atomics are fine for these, since they don't guard any memory.
Diffstat (limited to 'netwerk/base/nsStreamLoader.cpp')
-rw-r--r--netwerk/base/nsStreamLoader.cpp7
1 files changed, 5 insertions, 2 deletions
diff --git a/netwerk/base/nsStreamLoader.cpp b/netwerk/base/nsStreamLoader.cpp
index a73b038a7..9990d1882 100644
--- a/netwerk/base/nsStreamLoader.cpp
+++ b/netwerk/base/nsStreamLoader.cpp
@@ -54,7 +54,7 @@ NS_IMPL_ISUPPORTS(nsStreamLoader, nsIStreamLoader,
NS_IMETHODIMP
nsStreamLoader::GetNumBytesRead(uint32_t* aNumBytes)
{
- *aNumBytes = mData.length();
+ *aNumBytes = mBytesRead;
return NS_OK;
}
@@ -150,7 +150,10 @@ nsStreamLoader::OnDataAvailable(nsIRequest* request, nsISupports *ctxt,
uint64_t sourceOffset, uint32_t count)
{
uint32_t countRead;
- return inStr->ReadSegments(WriteSegmentFun, this, count, &countRead);
+ nsresult rv = inStr->ReadSegments(WriteSegmentFun, this, count, &countRead);
+ NS_ENSURE_SUCCESS(rv, rv);
+ mBytesRead += countRead;
+ return NS_OK;
}
void