diff options
Diffstat (limited to 'libs/rs')
-rw-r--r-- | libs/rs/rsAllocation.cpp | 3 | ||||
-rw-r--r-- | libs/rs/rsElement.cpp | 4 |
2 files changed, 5 insertions, 2 deletions
diff --git a/libs/rs/rsAllocation.cpp b/libs/rs/rsAllocation.cpp index 7d31bd6..7e44fea 100644 --- a/libs/rs/rsAllocation.cpp +++ b/libs/rs/rsAllocation.cpp @@ -34,6 +34,9 @@ Allocation::Allocation(Context *rsc, const Type *type) : ObjectBase(rsc) init(rsc, type); mPtr = malloc(mType->getSizeBytes()); + if (mType->getElement()->getHasReferences()) { + memset(mPtr, 0, mType->getSizeBytes()); + } if (!mPtr) { LOGE("Allocation::Allocation, alloc failure"); } diff --git a/libs/rs/rsElement.cpp b/libs/rs/rsElement.cpp index 5dee1fb..2602dd4 100644 --- a/libs/rs/rsElement.cpp +++ b/libs/rs/rsElement.cpp @@ -266,7 +266,7 @@ void Element::incRefs(const void *ptr) const if (mComponent.isReference()) { ObjectBase *const*obp = static_cast<ObjectBase *const*>(ptr); ObjectBase *ob = obp[0]; - ob->incSysRef(); + if (ob) ob->incSysRef(); } return; } @@ -285,7 +285,7 @@ void Element::decRefs(const void *ptr) const if (mComponent.isReference()) { ObjectBase *const*obp = static_cast<ObjectBase *const*>(ptr); ObjectBase *ob = obp[0]; - ob->decSysRef(); + if (ob) ob->decSysRef(); } return; } |