summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--rsClosure.cpp5
-rw-r--r--rsClosure.h2
2 files changed, 5 insertions, 2 deletions
diff --git a/rsClosure.cpp b/rsClosure.cpp
index 4b57be4d..85bf052f 100644
--- a/rsClosure.cpp
+++ b/rsClosure.cpp
@@ -113,7 +113,9 @@ Closure::Closure(Context* context, const ScriptInvokeID* invokeID,
const void** values, const int* sizes) :
ObjectBase(context), mContext(context), mFunctionID((IDBase*)invokeID), mIsKernel(false),
mArgs(nullptr), mNumArg(0),
- mReturnValue(nullptr), mParams(params), mParamLength(paramLength) {
+ mReturnValue(nullptr), mParamLength(paramLength) {
+ mParams = new uint8_t[mParamLength];
+ memcpy(mParams, params, mParamLength);
for (size_t i = 0; i < numValues; i++) {
mGlobals[fieldIDs[i]] = make_pair(values[i], sizes[i]);
}
@@ -134,6 +136,7 @@ Closure::~Closure() {
}
delete[] mArgs;
+ delete[] mParams;
}
void Closure::setArg(const uint32_t index, const void* value, const size_t size) {
diff --git a/rsClosure.h b/rsClosure.h
index ad44821c..6847fad9 100644
--- a/rsClosure.h
+++ b/rsClosure.h
@@ -75,7 +75,7 @@ class Closure : public ObjectBase {
Map<const Closure*, Map<const ScriptFieldID*,
ObjectBaseRef<ScriptFieldID>>*> mGlobalDeps;
- const void* mParams;
+ uint8_t* mParams;
const size_t mParamLength;
};