I think this question is similar to this one and I used most of it's answer for my problem, but I still have issues:
First the C code:
#include <stdio.h>
extern "C"
{
void fillArray(int* a, int len)
{
for (int i = 0; i<len; i++)
{
a[i] = i*i;
}
for (int j = 0; j < len; ++j)
{
printf("a[%d] = %d\n", j, a[j]);
}
}
}
I'm passing a pointer to an array to my C function and fill it with some information. I compile this code with
emcc -o writebmp.js dummyCode\cwrapCall.cxx -s EXPORTED_FUNCTIONS="['_fillArray']"
My html/js code is the following:
<!doctype html>
<html>
<script src="writebmp.js"></script>
<script>
fillArray = Module.cwrap('fillArray', null, ['number', 'number']);
var nByte = 4
var length = 20;
var buffer = Module._malloc(length*nByte);
fillArray(buffer, length);
for (var i = 0; i < length; i++)
{
console.log(Module.getValue(buffer+i*nByte));
}
</script>
</html>
When I run the script the output I get is correct until the 12th element, after that it is garbage. Is the buffer I malloc too small?