public ByteArrayWithLength this[string fname] { get { //ConsoleExtensions.trace("enter argsByteArray"); var iscopy = default(bool); var fields_GetType = env.GetObjectClass(env, fields); var fref = env.GetFieldID(env, fields_GetType, fname, "[B"); var v = env.GetObjectField(env, fields, fref); // I/DEBUG ( 2940): Abort message: 'sart/runtime/check_jni.cc:65] JNI DETECTED ERROR IN APPLICATION: jarray was NULL' if (v == null) { ConsoleExtensions.tracei("new Buffer null"); } else { var len = env.GetArrayLength(env, v); //ConsoleExtensions.tracei("GetArrayLength", len); if (len > 0) { if (Buffer == null) { // first timer. easy. BufferLength = len; Buffer = new byte[len]; ConsoleExtensions.tracei("new Buffer ", len); //jni/OVRWindWheelNDK.dll.c:471:135: error: 'flag4' undeclared (first use in this function) // byte_5 = (/* typecast */(unsigned char*(*)(JNIEnv*, void*, int*))(*__that->env)->GetByteArrayElements)(__that->env, object2, &flag4); var loc = env.GetByteArrayElements(env, v, out iscopy); if (loc != null) { for (int i = 0; i < len; i++) { Buffer[i] = loc[i]; } env.ReleaseByteArrayElements(env, v, loc); } } else { // same size... no redim. //ConsoleExtensions.tracei("reuse Buffer ", len); //Array.Resize(ref this.Buffer, len); // A pointer to the reallocated memory block, which may be either the same as ptr or a new location. if (BufferLength != len) { this.Buffer = stdlib_h.realloc(this.Buffer, len); this.BufferLength = len; } var loc = env.GetByteArrayElements(env, v, out iscopy); if (loc != null) { for (int i = 0; i < len; i++) { Buffer[i] = loc[i]; } env.ReleaseByteArrayElements(env, v, loc); } } } } //env.SetLongField(env, fields, fref, value); var copyout = new ByteArrayWithLength { Buffer = this.Buffer, BufferLength = this.BufferLength }; return(copyout); } }