diff options
Diffstat (limited to 'rsProgram.cpp')
| -rw-r--r-- | rsProgram.cpp | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/rsProgram.cpp b/rsProgram.cpp index 7114f29d..806d1de0 100644 --- a/rsProgram.cpp +++ b/rsProgram.cpp @@ -77,7 +77,9 @@ Program::Program(Context *rsc, const char * shaderText, size_t shaderLength, shaderText += internalTokenLen; shaderLength -= internalTokenLen; } - mUserShader.setTo(shaderText, shaderLength); + + mUserShader = rsuCopyString(shaderText, shaderLength); + mUserShaderLen = shaderLength; } Program::~Program() { @@ -98,6 +100,12 @@ Program::~Program() { mHal.state.inputElementsCount = 0; mHal.state.constantsCount = 0; mHal.state.texturesCount = 0; + + if (mUserShader != NULL) { + delete[] mUserShader; + mUserShader = NULL; + } + mUserShaderLen = 0; } bool Program::freeChildren() { @@ -134,6 +142,9 @@ void Program::initMemberVars() { mConstants = NULL; mIsInternal = false; + + mUserShader = NULL; + mUserShaderLen = 0; } void Program::bindAllocation(Context *rsc, Allocation *alloc, uint32_t slot) { |
