summaryrefslogtreecommitdiffstats
path: root/media/mtp
diff options
context:
space:
mode:
authorMike Lockwood <lockwood@android.com>2010-08-18 12:31:09 -0400
committerMike Lockwood <lockwood@android.com>2010-08-18 13:31:46 -0400
commitde1e37aad04640ef76f3c017b65adca087c7be0f (patch)
treea6d2f4b1a88bb9571d5ca0f452fdfbad9c931f7a /media/mtp
parentf211e5ab69b8f554b5e268699988640c2ec22255 (diff)
downloadframeworks_av-de1e37aad04640ef76f3c017b65adca087c7be0f.zip
frameworks_av-de1e37aad04640ef76f3c017b65adca087c7be0f.tar.gz
frameworks_av-de1e37aad04640ef76f3c017b65adca087c7be0f.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.cpp5
-rw-r--r--media/mtp/MtpDataPacket.h2
-rw-r--r--media/mtp/MtpStringBuffer.cpp5
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