Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9907d161 authored by Brad Fitzpatrick's avatar Brad Fitzpatrick Committed by Android Code Review
Browse files

Merge "Fix data corruption when writing to Bluetooth socket"

parents 2ed72048 36aa8839
Loading
Loading
Loading
Loading
+13 −7
Original line number Diff line number Diff line
@@ -448,7 +448,7 @@ static jint writeNative(JNIEnv *env, jobject obj, jbyteArray jb, jint offset,
#ifdef HAVE_BLUETOOTH
    LOGV(__FUNCTION__);

    int ret;
    int ret, total;
    jbyte *b;
    int sz;
    struct asocket *s = get_socketData(env, obj);
@@ -471,15 +471,21 @@ static jint writeNative(JNIEnv *env, jobject obj, jbyteArray jb, jint offset,
        return -1;
    }

    total = 0;
    while (length > 0) {
        ret = asocket_write(s, &b[offset], length, -1);
        if (ret < 0) {
            jniThrowIOException(env, errno);
            env->ReleaseByteArrayElements(jb, b, JNI_ABORT);
            return -1;
        }
        offset += ret;
        total += ret;
        length -= ret;
    }

    env->ReleaseByteArrayElements(jb, b, JNI_ABORT);  // no need to commit
    return (jint)ret;
    return (jint)total;

#endif
    jniThrowIOException(env, ENOSYS);