summaryrefslogtreecommitdiff
path: root/libs
diff options
context:
space:
mode:
author Stephen Hines <srhines@google.com> 2011-03-25 14:52:22 -0700
committer Android (Google) Code Review <android-gerrit@google.com> 2011-03-25 14:52:22 -0700
commite80b8736d660cf8a27e1bbfa3d546b3e8ae57548 (patch)
tree2380e0d3ad151558c6bbd62dd06330618c9658f6 /libs
parentbad2506ae9b879979a9fdc11e15bced2445c0c9b (diff)
parent623cb9585e110ecc11b48a12bf4a02efd5293aaa (diff)
Merge "Properly handle script teardown."
Diffstat (limited to 'libs')
-rw-r--r--libs/rs/driver/rsdBcc.cpp6
1 files changed, 5 insertions, 1 deletions
diff --git a/libs/rs/driver/rsdBcc.cpp b/libs/rs/driver/rsdBcc.cpp
index 2038a4c0c767..6c5a55be85ed 100644
--- a/libs/rs/driver/rsdBcc.cpp
+++ b/libs/rs/driver/rsdBcc.cpp
@@ -522,7 +522,11 @@ void rsdScriptDestroy(const Context *dc, Script *script) {
if (drv->mFieldAddress) {
for (size_t ct=0; ct < drv->mFieldCount; ct++) {
if (drv->mFieldIsObject[ct]) {
- rsiClearObject((ObjectBase **)&drv->mFieldAddress[ct]);
+ // The field address can be NULL if the script-side has
+ // optimized the corresponding global variable away.
+ if (drv->mFieldAddress[ct]) {
+ rsiClearObject((ObjectBase **)drv->mFieldAddress[ct]);
+ }
}
}
delete [] drv->mFieldAddress;