aboutsummaryrefslogtreecommitdiffstats
path: root/src/v4/qv4object.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/v4/qv4object.cpp')
-rw-r--r--src/v4/qv4object.cpp10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/v4/qv4object.cpp b/src/v4/qv4object.cpp
index f82b8bfae2..5091ceb095 100644
--- a/src/v4/qv4object.cpp
+++ b/src/v4/qv4object.cpp
@@ -69,7 +69,7 @@ DEFINE_MANAGED_VTABLE(Object);
Object::Object(ExecutionEngine *engine)
: prototype(0)
, internalClass(engine->emptyClass)
- , memberDataAlloc(0), memberData(0)
+ , memberDataAlloc(InlinePropertySize), memberData(inlineProperties)
, arrayOffset(0), arrayDataLen(0), arrayAlloc(0), arrayAttributes(0), arrayData(0), sparseArray(0)
, externalResource(0)
{
@@ -80,7 +80,7 @@ Object::Object(ExecutionEngine *engine)
Object::Object(ExecutionContext *context)
: prototype(0)
, internalClass(context->engine->emptyClass)
- , memberDataAlloc(0), memberData(0)
+ , memberDataAlloc(InlinePropertySize), memberData(inlineProperties)
, arrayOffset(0), arrayDataLen(0), arrayAlloc(0), arrayAttributes(0), arrayData(0), sparseArray(0)
, externalResource(0)
{
@@ -91,7 +91,8 @@ Object::Object(ExecutionContext *context)
Object::~Object()
{
delete externalResource;
- delete [] memberData;
+ if (memberData != inlineProperties)
+ delete [] memberData;
delete [] (arrayData - (sparseArray ? 0 : arrayOffset));
if (arrayAttributes)
delete [] (arrayAttributes - (sparseArray ? 0 : arrayOffset));
@@ -229,7 +230,8 @@ Property *Object::insertMember(String *s, PropertyAttributes attributes)
memberDataAlloc = qMax((uint)8, 2*memberDataAlloc);
Property *newMemberData = new Property[memberDataAlloc];
memcpy(newMemberData, memberData, sizeof(Property)*idx);
- delete [] memberData;
+ if (memberData != inlineProperties)
+ delete [] memberData;
memberData = newMemberData;
}
return memberData + idx;