Merge pull request #40143 from GiantBlargg/master

Fix Mono PackedArray Marshalling
This commit is contained in:
Rémi Verschelde 2020-07-06 00:58:56 +02:00 committed by GitHub
commit a8e330ea19
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 16 additions and 16 deletions

View File

@ -1229,7 +1229,7 @@ MonoArray *PackedInt32Array_to_mono_array(const PackedInt32Array &p_array) {
MonoArray *ret = mono_array_new(mono_domain_get(), CACHED_CLASS_RAW(int32_t), length); MonoArray *ret = mono_array_new(mono_domain_get(), CACHED_CLASS_RAW(int32_t), length);
int32_t *dst = mono_array_addr(ret, int32_t, 0); int32_t *dst = mono_array_addr(ret, int32_t, 0);
memcpy(dst, src, length); memcpy(dst, src, length * sizeof(int32_t));
return ret; return ret;
} }
@ -1244,7 +1244,7 @@ PackedInt32Array mono_array_to_PackedInt32Array(MonoArray *p_array) {
int32_t *dst = ret.ptrw(); int32_t *dst = ret.ptrw();
const int32_t *src = mono_array_addr(p_array, int32_t, 0); const int32_t *src = mono_array_addr(p_array, int32_t, 0);
memcpy(dst, src, length); memcpy(dst, src, length * sizeof(int32_t));
return ret; return ret;
} }
@ -1256,7 +1256,7 @@ MonoArray *PackedInt64Array_to_mono_array(const PackedInt64Array &p_array) {
MonoArray *ret = mono_array_new(mono_domain_get(), CACHED_CLASS_RAW(int64_t), length); MonoArray *ret = mono_array_new(mono_domain_get(), CACHED_CLASS_RAW(int64_t), length);
int64_t *dst = mono_array_addr(ret, int64_t, 0); int64_t *dst = mono_array_addr(ret, int64_t, 0);
memcpy(dst, src, length); memcpy(dst, src, length * sizeof(int64_t));
return ret; return ret;
} }
@ -1271,7 +1271,7 @@ PackedInt64Array mono_array_to_PackedInt64Array(MonoArray *p_array) {
int64_t *dst = ret.ptrw(); int64_t *dst = ret.ptrw();
const int64_t *src = mono_array_addr(p_array, int64_t, 0); const int64_t *src = mono_array_addr(p_array, int64_t, 0);
memcpy(dst, src, length); memcpy(dst, src, length * sizeof(int64_t));
return ret; return ret;
} }
@ -1283,7 +1283,7 @@ MonoArray *PackedByteArray_to_mono_array(const PackedByteArray &p_array) {
MonoArray *ret = mono_array_new(mono_domain_get(), CACHED_CLASS_RAW(uint8_t), length); MonoArray *ret = mono_array_new(mono_domain_get(), CACHED_CLASS_RAW(uint8_t), length);
uint8_t *dst = mono_array_addr(ret, uint8_t, 0); uint8_t *dst = mono_array_addr(ret, uint8_t, 0);
memcpy(dst, src, length); memcpy(dst, src, length * sizeof(uint8_t));
return ret; return ret;
} }
@ -1298,7 +1298,7 @@ PackedByteArray mono_array_to_PackedByteArray(MonoArray *p_array) {
uint8_t *dst = ret.ptrw(); uint8_t *dst = ret.ptrw();
const uint8_t *src = mono_array_addr(p_array, uint8_t, 0); const uint8_t *src = mono_array_addr(p_array, uint8_t, 0);
memcpy(dst, src, length); memcpy(dst, src, length * sizeof(uint8_t));
return ret; return ret;
} }
@ -1310,7 +1310,7 @@ MonoArray *PackedFloat32Array_to_mono_array(const PackedFloat32Array &p_array) {
MonoArray *ret = mono_array_new(mono_domain_get(), CACHED_CLASS_RAW(float), length); MonoArray *ret = mono_array_new(mono_domain_get(), CACHED_CLASS_RAW(float), length);
float *dst = mono_array_addr(ret, float, 0); float *dst = mono_array_addr(ret, float, 0);
memcpy(dst, src, length); memcpy(dst, src, length * sizeof(float));
return ret; return ret;
} }
@ -1325,7 +1325,7 @@ PackedFloat32Array mono_array_to_PackedFloat32Array(MonoArray *p_array) {
float *dst = ret.ptrw(); float *dst = ret.ptrw();
const float *src = mono_array_addr(p_array, float, 0); const float *src = mono_array_addr(p_array, float, 0);
memcpy(dst, src, length); memcpy(dst, src, length * sizeof(float));
return ret; return ret;
} }
@ -1337,7 +1337,7 @@ MonoArray *PackedFloat64Array_to_mono_array(const PackedFloat64Array &p_array) {
MonoArray *ret = mono_array_new(mono_domain_get(), CACHED_CLASS_RAW(double), length); MonoArray *ret = mono_array_new(mono_domain_get(), CACHED_CLASS_RAW(double), length);
double *dst = mono_array_addr(ret, double, 0); double *dst = mono_array_addr(ret, double, 0);
memcpy(dst, src, length); memcpy(dst, src, length * sizeof(double));
return ret; return ret;
} }
@ -1352,7 +1352,7 @@ PackedFloat64Array mono_array_to_PackedFloat64Array(MonoArray *p_array) {
double *dst = ret.ptrw(); double *dst = ret.ptrw();
const double *src = mono_array_addr(p_array, double, 0); const double *src = mono_array_addr(p_array, double, 0);
memcpy(dst, src, length); memcpy(dst, src, length * sizeof(double));
return ret; return ret;
} }
@ -1396,7 +1396,7 @@ MonoArray *PackedColorArray_to_mono_array(const PackedColorArray &p_array) {
if constexpr (InteropLayout::MATCHES_Color) { if constexpr (InteropLayout::MATCHES_Color) {
Color *dst = mono_array_addr(ret, Color, 0); Color *dst = mono_array_addr(ret, Color, 0);
memcpy(dst, src, length); memcpy(dst, src, length * sizeof(Color));
} else { } else {
for (int i = 0; i < length; i++) { for (int i = 0; i < length; i++) {
M_Color *raw = (M_Color *)mono_array_addr_with_size(ret, sizeof(M_Color), i); M_Color *raw = (M_Color *)mono_array_addr_with_size(ret, sizeof(M_Color), i);
@ -1418,7 +1418,7 @@ PackedColorArray mono_array_to_PackedColorArray(MonoArray *p_array) {
if constexpr (InteropLayout::MATCHES_Color) { if constexpr (InteropLayout::MATCHES_Color) {
const Color *src = mono_array_addr(p_array, Color, 0); const Color *src = mono_array_addr(p_array, Color, 0);
memcpy(dst, src, length); memcpy(dst, src, length * sizeof(Color));
} else { } else {
for (int i = 0; i < length; i++) { for (int i = 0; i < length; i++) {
dst[i] = MARSHALLED_IN(Color, (M_Color *)mono_array_addr_with_size(p_array, sizeof(M_Color), i)); dst[i] = MARSHALLED_IN(Color, (M_Color *)mono_array_addr_with_size(p_array, sizeof(M_Color), i));
@ -1436,7 +1436,7 @@ MonoArray *PackedVector2Array_to_mono_array(const PackedVector2Array &p_array) {
if constexpr (InteropLayout::MATCHES_Vector2) { if constexpr (InteropLayout::MATCHES_Vector2) {
Vector2 *dst = mono_array_addr(ret, Vector2, 0); Vector2 *dst = mono_array_addr(ret, Vector2, 0);
memcpy(dst, src, length); memcpy(dst, src, length * sizeof(Vector2));
} else { } else {
for (int i = 0; i < length; i++) { for (int i = 0; i < length; i++) {
M_Vector2 *raw = (M_Vector2 *)mono_array_addr_with_size(ret, sizeof(M_Vector2), i); M_Vector2 *raw = (M_Vector2 *)mono_array_addr_with_size(ret, sizeof(M_Vector2), i);
@ -1458,7 +1458,7 @@ PackedVector2Array mono_array_to_PackedVector2Array(MonoArray *p_array) {
if constexpr (InteropLayout::MATCHES_Vector2) { if constexpr (InteropLayout::MATCHES_Vector2) {
const Vector2 *src = mono_array_addr(p_array, Vector2, 0); const Vector2 *src = mono_array_addr(p_array, Vector2, 0);
memcpy(dst, src, length); memcpy(dst, src, length * sizeof(Vector2));
} else { } else {
for (int i = 0; i < length; i++) { for (int i = 0; i < length; i++) {
dst[i] = MARSHALLED_IN(Vector2, (M_Vector2 *)mono_array_addr_with_size(p_array, sizeof(M_Vector2), i)); dst[i] = MARSHALLED_IN(Vector2, (M_Vector2 *)mono_array_addr_with_size(p_array, sizeof(M_Vector2), i));
@ -1476,7 +1476,7 @@ MonoArray *PackedVector3Array_to_mono_array(const PackedVector3Array &p_array) {
if constexpr (InteropLayout::MATCHES_Vector3) { if constexpr (InteropLayout::MATCHES_Vector3) {
Vector3 *dst = mono_array_addr(ret, Vector3, 0); Vector3 *dst = mono_array_addr(ret, Vector3, 0);
memcpy(dst, src, length); memcpy(dst, src, length * sizeof(Vector3));
} else { } else {
for (int i = 0; i < length; i++) { for (int i = 0; i < length; i++) {
M_Vector3 *raw = (M_Vector3 *)mono_array_addr_with_size(ret, sizeof(M_Vector3), i); M_Vector3 *raw = (M_Vector3 *)mono_array_addr_with_size(ret, sizeof(M_Vector3), i);
@ -1498,7 +1498,7 @@ PackedVector3Array mono_array_to_PackedVector3Array(MonoArray *p_array) {
if constexpr (InteropLayout::MATCHES_Vector3) { if constexpr (InteropLayout::MATCHES_Vector3) {
const Vector3 *src = mono_array_addr(p_array, Vector3, 0); const Vector3 *src = mono_array_addr(p_array, Vector3, 0);
memcpy(dst, src, length); memcpy(dst, src, length * sizeof(Vector3));
} else { } else {
for (int i = 0; i < length; i++) { for (int i = 0; i < length; i++) {
dst[i] = MARSHALLED_IN(Vector3, (M_Vector3 *)mono_array_addr_with_size(p_array, sizeof(M_Vector3), i)); dst[i] = MARSHALLED_IN(Vector3, (M_Vector3 *)mono_array_addr_with_size(p_array, sizeof(M_Vector3), i));