mirror of
https://bitbucket.org/chromiumembedded/cef
synced 2025-06-05 21:39:12 +02:00
Fix dangling raw_ptr errors and related issues (see #3239)
- Use raw_ptr in class container fields. - Use defined lifespan for StreamReaderURLLoader. - Fix lifespan assumptions for WebContents/RFH usage.
This commit is contained in:
@@ -8,7 +8,7 @@
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
#include "base/memory/raw_ptr.h"
|
||||
#include "base/synchronization/lock.h"
|
||||
@@ -59,8 +59,8 @@ class CefFileWriter : public CefStreamWriter {
|
||||
// Implementation of CefStreamReader for byte buffers.
|
||||
class CefBytesReader : public CefStreamReader {
|
||||
public:
|
||||
CefBytesReader(void* data, int64_t datasize, bool copy);
|
||||
~CefBytesReader() override;
|
||||
// |data| is always copied.
|
||||
CefBytesReader(void* data, int64_t datasize);
|
||||
|
||||
size_t Read(void* ptr, size_t size, size_t n) override;
|
||||
int Seek(int64_t offset, int whence) override;
|
||||
@@ -68,15 +68,11 @@ class CefBytesReader : public CefStreamReader {
|
||||
int Eof() override;
|
||||
bool MayBlock() override { return false; }
|
||||
|
||||
void SetData(void* data, int64_t datasize, bool copy);
|
||||
|
||||
void* GetData() { return data_; }
|
||||
size_t GetDataSize() { return offset_; }
|
||||
// |data| is always copied.
|
||||
void SetData(void* data, int64_t datasize);
|
||||
|
||||
protected:
|
||||
raw_ptr<void> data_ = nullptr;
|
||||
int64_t datasize_ = 0;
|
||||
bool copy_ = false;
|
||||
std::vector<unsigned char> data_;
|
||||
int64_t offset_ = 0;
|
||||
|
||||
base::Lock lock_;
|
||||
@@ -84,35 +80,6 @@ class CefBytesReader : public CefStreamReader {
|
||||
IMPLEMENT_REFCOUNTING(CefBytesReader);
|
||||
};
|
||||
|
||||
// Implementation of CefStreamWriter for byte buffers.
|
||||
class CefBytesWriter : public CefStreamWriter {
|
||||
public:
|
||||
explicit CefBytesWriter(size_t grow);
|
||||
~CefBytesWriter() override;
|
||||
|
||||
size_t Write(const void* ptr, size_t size, size_t n) override;
|
||||
int Seek(int64_t offset, int whence) override;
|
||||
int64_t Tell() override;
|
||||
int Flush() override;
|
||||
bool MayBlock() override { return false; }
|
||||
|
||||
void* GetData() { return data_; }
|
||||
int64_t GetDataSize() { return offset_; }
|
||||
std::string GetDataString();
|
||||
|
||||
protected:
|
||||
size_t Grow(size_t size);
|
||||
|
||||
size_t grow_;
|
||||
raw_ptr<void> data_;
|
||||
int64_t datasize_;
|
||||
int64_t offset_ = 0;
|
||||
|
||||
base::Lock lock_;
|
||||
|
||||
IMPLEMENT_REFCOUNTING(CefBytesWriter);
|
||||
};
|
||||
|
||||
// Implementation of CefStreamReader for handlers.
|
||||
class CefHandlerReader : public CefStreamReader {
|
||||
public:
|
||||
|
Reference in New Issue
Block a user