From 623cb9585e110ecc11b48a12bf4a02efd5293aaa Mon Sep 17 00:00:00 2001 From: Stephen Hines Date: Thu, 24 Mar 2011 20:03:49 -0700 Subject: Properly handle script teardown. If libbcc optimizes away a global variable, we need to make sure that RenderScript's ~Context() doesn't attempt to clear away the slot's NULL pointer that denotes this. Change-Id: I77d0f740ab333338e53db481e4a3eca338aba411 --- libs/rs/driver/rsdBcc.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'libs') 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; -- cgit v1.2.3-59-g8ed1b