Always dynamically allocate PropertyTable

- `Texture::~Texture` expects `props` to be dynamically allocated.

- `GetPropertyTable` returned a pointer to an existing `PropertyTable`
  but is expected to return a newly, dynamically allocated one.

- `PropertyTable::PropertyTable()` suggests that an empty `element`
  property is valid.

fix #46876
fix #45573
This commit is contained in:
Alex Hirsch 2021-03-10 19:09:41 +01:00
parent 85cb3c044d
commit 09bda3f140
3 changed files with 7 additions and 1 deletions

View File

@ -160,7 +160,7 @@ const PropertyTable *GetPropertyTable(const Document &doc,
DOMWarning("property table (Properties70) not found", element); DOMWarning("property table (Properties70) not found", element);
} }
if (templateProps) { if (templateProps) {
return templateProps; return new const PropertyTable(templateProps);
} else { } else {
return new const PropertyTable(); return new const PropertyTable();
} }

View File

@ -149,6 +149,11 @@ PropertyTable::PropertyTable() :
templateProps(), element() { templateProps(), element() {
} }
// ------------------------------------------------------------------------------------------------
PropertyTable::PropertyTable(const PropertyTable *templateProps) :
templateProps(templateProps), element() {
}
// ------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------
PropertyTable::PropertyTable(const ElementPtr element, const PropertyTable *templateProps) : PropertyTable::PropertyTable(const ElementPtr element, const PropertyTable *templateProps) :
templateProps(templateProps), element(element) { templateProps(templateProps), element(element) {

View File

@ -137,6 +137,7 @@ class PropertyTable {
public: public:
// in-memory property table with no source element // in-memory property table with no source element
PropertyTable(); PropertyTable();
PropertyTable(const PropertyTable *templateProps);
PropertyTable(const ElementPtr element, const PropertyTable *templateProps); PropertyTable(const ElementPtr element, const PropertyTable *templateProps);
~PropertyTable(); ~PropertyTable();