mirror of
https://github.com/RGBCube/serenity
synced 2025-07-27 15:47:45 +00:00
LibPDF: Switch to automatic ref counting, fix memory leak
At least `Value::operator=` didn't properly unref the `PDF::Object` when it was called. This type of problem is removed by just letting `RefPtr` do its thing. This patch increases the memory consumption by LibPDF by 4 bytes (the other union objects) per value.
This commit is contained in:
parent
05006e63c4
commit
750bed254f
2 changed files with 3 additions and 12 deletions
|
@ -7,6 +7,7 @@
|
|||
#pragma once
|
||||
|
||||
#include <AK/Format.h>
|
||||
#include <AK/RefPtr.h>
|
||||
|
||||
namespace PDF {
|
||||
|
||||
|
@ -66,7 +67,6 @@ public:
|
|||
: m_type(obj ? Type::Object : Type::Empty)
|
||||
{
|
||||
if (obj) {
|
||||
obj->ref();
|
||||
m_as_object = obj;
|
||||
}
|
||||
}
|
||||
|
@ -75,7 +75,6 @@ public:
|
|||
Value(NonnullRefPtr<T> obj)
|
||||
: m_type(Type::Object)
|
||||
{
|
||||
obj->ref();
|
||||
m_as_object = obj;
|
||||
}
|
||||
|
||||
|
@ -84,7 +83,7 @@ public:
|
|||
*this = other;
|
||||
}
|
||||
|
||||
~Value();
|
||||
~Value() = default;
|
||||
|
||||
Value& operator=(Value const& other);
|
||||
|
||||
|
@ -179,9 +178,9 @@ private:
|
|||
int m_as_int;
|
||||
u32 m_as_ref;
|
||||
float m_as_float;
|
||||
Object* m_as_object;
|
||||
};
|
||||
|
||||
RefPtr<Object> m_as_object;
|
||||
Type m_type;
|
||||
};
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue