diff --git a/mozilla/xpcom/io/nsFileSpec.cpp b/mozilla/xpcom/io/nsFileSpec.cpp index 6422d811025..9a68f73ee8c 100644 --- a/mozilla/xpcom/io/nsFileSpec.cpp +++ b/mozilla/xpcom/io/nsFileSpec.cpp @@ -1086,6 +1086,13 @@ void nsPersistentFileDescriptor::SetData(const nsSimpleCharString& inData, PRInt mDescriptorString.CopyFrom((const char*)inData, inSize); } +//---------------------------------------------------------------------------------------- +void nsPersistentFileDescriptor::SetData(const char* inData, PRInt32 inSize) +//---------------------------------------------------------------------------------------- +{ + mDescriptorString.CopyFrom(inData, inSize); +} + //======================================================================================== // class nsAutoCString //======================================================================================== diff --git a/mozilla/xpcom/io/nsFileSpec.h b/mozilla/xpcom/io/nsFileSpec.h index 558aab2d178..92f99f6f21f 100644 --- a/mozilla/xpcom/io/nsFileSpec.h +++ b/mozilla/xpcom/io/nsFileSpec.h @@ -644,6 +644,7 @@ class NS_COM nsPersistentFileDescriptor void SetData(const nsSimpleCharString& inData); void GetData(nsSimpleCharString& outData, PRInt32& outSize) const; void SetData(const nsSimpleCharString& inData, PRInt32 inSize); + void SetData(const char* inData, PRInt32 inSize); //-------------------------------------------------- // Data diff --git a/mozilla/xpcom/io/nsFileSpecStreaming.cpp b/mozilla/xpcom/io/nsFileSpecStreaming.cpp index a41a53a4571..0a2ebf4dadb 100644 --- a/mozilla/xpcom/io/nsFileSpecStreaming.cpp +++ b/mozilla/xpcom/io/nsFileSpecStreaming.cpp @@ -59,6 +59,8 @@ nsInputStream& operator >> (nsInputStream& s, nsPersistentFileDescriptor& d) // Now we know how many bytes to read, do it. bytesRead = s.read(bigBuffer, bytesRead); } + // Make sure we are null terminated + bigBuffer[bytesRead]='\0'; d.SetData(bigBuffer, bytesRead); return s; }