am 27e00544: am 9907d161: Merge "Fix data corruption when writing to Bluetooth socket"

* commit '27e00544ea08d25e8e9b1b94264205f9d53030fb':
  Fix data corruption when writing to Bluetooth socket
This commit is contained in:
Brad Fitzpatrick
2011-04-04 15:25:39 -07:00
committed by Android Git Automerger

View File

@ -448,7 +448,7 @@ static jint writeNative(JNIEnv *env, jobject obj, jbyteArray jb, jint offset,
#ifdef HAVE_BLUETOOTH
LOGV("%s", __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;
}
ret = asocket_write(s, &b[offset], length, -1);
if (ret < 0) {
jniThrowIOException(env, errno);
env->ReleaseByteArrayElements(jb, b, JNI_ABORT);
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);