Fix field packer bug for U32 data.
Fix initial refcounts in allocations.
Support null references in allocations.
Change-Id: Ifba6406ba750e69737bd77fa7df5d7fb8e27a5b4
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 @@
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 @@
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 @@
if (mComponent.isReference()) {
ObjectBase *const*obp = static_cast<ObjectBase *const*>(ptr);
ObjectBase *ob = obp[0];
- ob->decSysRef();
+ if (ob) ob->decSysRef();
}
return;
}