diff options
author | Mike Lockwood <lockwood@android.com> | 2010-08-18 12:31:09 -0400 |
---|---|---|
committer | Mike Lockwood <lockwood@android.com> | 2010-08-18 13:31:46 -0400 |
commit | 9e837861b28b8186da0791c9a4e72f8a128a980c (patch) | |
tree | b9ce4e065d7a87b4da96fcb9f26f901f95f32e92 /media/mtp | |
parent | 243efd2c573eea5ee571d619503e81be8de3ff9b (diff) | |
download | frameworks_base-9e837861b28b8186da0791c9a4e72f8a128a980c.zip frameworks_base-9e837861b28b8186da0791c9a4e72f8a128a980c.tar.gz frameworks_base-9e837861b28b8186da0791c9a4e72f8a128a980c.tar.bz2 |
MTP: Compatibility fixes for transferring strings
Change-Id: Ic06d754ee68b0389439cdc34f73adff0f2b33afa
Signed-off-by: Mike Lockwood <lockwood@android.com>
Diffstat (limited to 'media/mtp')
-rw-r--r-- | media/mtp/MtpDataPacket.cpp | 5 | ||||
-rw-r--r-- | media/mtp/MtpDataPacket.h | 2 | ||||
-rw-r--r-- | media/mtp/MtpStringBuffer.cpp | 5 |
3 files changed, 9 insertions, 3 deletions
diff --git a/media/mtp/MtpDataPacket.cpp b/media/mtp/MtpDataPacket.cpp index 9bfd00f..27dc796 100644 --- a/media/mtp/MtpDataPacket.cpp +++ b/media/mtp/MtpDataPacket.cpp @@ -325,9 +325,12 @@ void MtpDataPacket::putString(const uint16_t* string) { else break; } - putUInt8(count); + putUInt8(count > 0 ? count + 1 : 0); for (int i = 0; i < count; i++) putUInt16(string[i]); + // only terminate with zero if string is not empty + if (count > 0) + putUInt16(0); } #ifdef MTP_DEVICE diff --git a/media/mtp/MtpDataPacket.h b/media/mtp/MtpDataPacket.h index b458286..1467aab 100644 --- a/media/mtp/MtpDataPacket.h +++ b/media/mtp/MtpDataPacket.h @@ -83,7 +83,7 @@ public: void putString(const MtpStringBuffer& string); void putString(const char* string); void putString(const uint16_t* string); - inline void putEmptyString() { putUInt16(0); } + inline void putEmptyString() { putUInt8(0); } inline void putEmptyArray() { putUInt32(0); } diff --git a/media/mtp/MtpStringBuffer.cpp b/media/mtp/MtpStringBuffer.cpp index 2d3cf69..8bf6731 100644 --- a/media/mtp/MtpStringBuffer.cpp +++ b/media/mtp/MtpStringBuffer.cpp @@ -112,7 +112,7 @@ void MtpStringBuffer::readFromPacket(MtpDataPacket* packet) { void MtpStringBuffer::writeToPacket(MtpDataPacket* packet) const { int count = mCharCount; const uint8_t* src = mBuffer; - packet->putUInt8(count); + packet->putUInt8(count > 0 ? count + 1 : 0); // expand utf8 to 16 bit chars for (int i = 0; i < count; i++) { @@ -133,6 +133,9 @@ void MtpStringBuffer::writeToPacket(MtpDataPacket* packet) const { } packet->putUInt16(ch); } + // only terminate with zero if string is not empty + if (count > 0) + packet->putUInt16(0); } } // namespace android |