77
88#include " JSIHelper.h"
99
10+ #include < utility>
11+
1012using namespace std ;
1113using namespace facebook ;
1214
@@ -27,7 +29,7 @@ QuickValue createTextQuickValue(string value)
2729{
2830 return QuickValue{
2931 .dataType = TEXT,
30- .textValue = value};
32+ .textValue = std::move ( value) };
3133}
3234
3335QuickValue createIntegerQuickValue (int value)
@@ -58,12 +60,13 @@ QuickValue createDoubleQuickValue(double value)
5860 .doubleOrIntValue = value};
5961}
6062
61- QuickValue createArrayBufferQuickValue ( uint8_t *arrayBufferValue, size_t arrayBufferSize)
63+ QuickValue createArrayBufferQuickValueByCopying ( const uint8_t *arrayBufferValue, size_t arrayBufferSize)
6264{
65+ vector<uint8_t > copy (arrayBufferValue, arrayBufferValue + arrayBufferSize);
66+
6367 return QuickValue{
6468 .dataType = ARRAY_BUFFER,
65- .arrayBufferValue = shared_ptr<uint8_t >{arrayBufferValue},
66- .arrayBufferSize = arrayBufferSize};
69+ .arrayBuffer = copy};
6770}
6871
6972void jsiQueryArgumentsToSequelParam (jsi::Runtime &rt, jsi::Value const ¶ms, vector<QuickValue> *target)
@@ -116,7 +119,7 @@ void jsiQueryArgumentsToSequelParam(jsi::Runtime &rt, jsi::Value const ¶ms,
116119 if (obj.isArrayBuffer (rt))
117120 {
118121 auto buf = obj.getArrayBuffer (rt);
119- target->push_back (createArrayBufferQuickValue (buf.data (rt), buf.size (rt)));
122+ target->push_back (createArrayBufferQuickValueByCopying (buf.data (rt), buf.size (rt)));
120123 }
121124 }
122125 else
@@ -171,10 +174,10 @@ jsi::Value createSequelQueryExecutionResult(jsi::Runtime &rt, SQLiteOPResult sta
171174 } else if (value.dataType == ARRAY_BUFFER)
172175 {
173176 jsi::Function array_buffer_ctor = rt.global ().getPropertyAsFunction (rt, " ArrayBuffer" );
174- jsi::Object o = array_buffer_ctor.callAsConstructor (rt, (int ) value.arrayBufferSize ).getObject (rt);
177+ jsi::Object o = array_buffer_ctor.callAsConstructor (rt, (int ) value.arrayBuffer . size () ).getObject (rt);
175178 jsi::ArrayBuffer buf = o.getArrayBuffer (rt);
176179 // It's a shame we have to copy here: see https://github.com/facebook/hermes/pull/419 and https://github.com/facebook/hermes/issues/564.
177- memcpy (buf.data (rt), value.arrayBufferValue . get (), value.arrayBufferSize );
180+ memcpy (buf.data (rt), value.arrayBuffer . data (), value.arrayBuffer . size () );
178181 rowObject.setProperty (rt, columnName.c_str (), o);
179182 } else
180183 {
0 commit comments