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

Commit 4ba50674 authored by Christine Hallstrom's avatar Christine Hallstrom Committed by Android (Google) Code Review
Browse files

Merge "Fix early termination of while loop in BluetoothSocket#write" into nyc-mr1-dev

parents 167dd902 5822d7e4
Loading
Loading
Loading
Loading
+9 −12
Original line number Original line Diff line number Diff line
@@ -532,22 +532,19 @@ public final class BluetoothSocket implements Closeable {
                if(length <= mMaxTxPacketSize) {
                if(length <= mMaxTxPacketSize) {
                    mSocketOS.write(b, offset, length);
                    mSocketOS.write(b, offset, length);
                } else {
                } else {
                    int tmpOffset = offset;
                    int tmpLength = mMaxTxPacketSize;
                    int endIndex = offset + length;
                    boolean done = false;
                    if(DBG) Log.w(TAG, "WARNING: Write buffer larger than L2CAP packet size!\n"
                    if(DBG) Log.w(TAG, "WARNING: Write buffer larger than L2CAP packet size!\n"
                            + "Packet will be divided into SDU packets of size "
                            + "Packet will be divided into SDU packets of size "
                            + mMaxTxPacketSize);
                            + mMaxTxPacketSize);
                    do{
                    int tmpOffset = offset;
                    int bytesToWrite = length;
                    while (bytesToWrite > 0) {
                        int tmpLength = (bytesToWrite > mMaxTxPacketSize)
                                ? mMaxTxPacketSize
                                : bytesToWrite;
                        mSocketOS.write(b, tmpOffset, tmpLength);
                        mSocketOS.write(b, tmpOffset, tmpLength);
                        tmpOffset += mMaxTxPacketSize;
                        tmpOffset += tmpLength;
                        if((tmpOffset + mMaxTxPacketSize) > endIndex) {
                        bytesToWrite -= tmpLength;
                            tmpLength = endIndex - tmpOffset;
                            done = true;
                    }
                    }
                    } while(!done);

                }
                }
            } else {
            } else {
                mSocketOS.write(b, offset, length);
                mSocketOS.write(b, offset, length);