From 6817c3eb0ada9ee92c3c25ba93fdbe3263dc9ac0 Mon Sep 17 00:00:00 2001
From: Pawel Wasowski
Date: Wed, 4 Aug 2021 16:49:28 +0200
Subject: [PATCH] [ML][Single] Fix invokeAsync
invokeAsync implementation did not should copy the input TensorsData
object, as it was supposed to. This commit adds copying
[Verification] Tested with the snippet below several times - the outputs
of invoke and invokeAsync were always identical:
var tensorsData;
var model;
function errorCallback(error)
{
console.log("Error during invokeAsync: " + error.message);
}
function isSameArray(a, b) {
if(a.length != b.length) {
return false;
}
for(var i=0 ; i Math.floor(Math.random() * 255));
var rgb = new Uint8Array(randomData);
tensorsData.setTensorRawData(0, rgb);
model.invokeAsync(tensorsData, successCallback, errorCallback);
};
Change-Id: Iff0d39ca6be9e1c5d2ff3c9f9fc3d061d49377c5
---
src/ml/ml_instance.cc | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/ml/ml_instance.cc b/src/ml/ml_instance.cc
index 5cd456c6..27f74b09 100644
--- a/src/ml/ml_instance.cc
+++ b/src/ml/ml_instance.cc
@@ -896,7 +896,8 @@ void MlInstance::MLSingleShotInvoke(const picojson::value& args, picojson::objec
if (async && in_tensors_data) {
// in case of async flow need to prevent destroying entry data during invoke
// from JS, creation of a copy
- in_tensors_data = GetTensorsInfoManager().CreateTensorsData(in_tensors_data->GetTensorsInfo());
+ in_tensors_data = GetTensorsInfoManager().CloneNativeTensorWithData(
+ in_tensors_data->GetTensorsInfo()->Handle(), in_tensors_data->Handle());
}
if (nullptr == in_tensors_data) {
LogAndReportError(PlatformResult(ErrorCode::ABORT_ERR, "Internal TensorsData error"), &out,
--
2.34.1