OSDN Git Service
(root)
/
android-x86
/
frameworks-base.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge "DO NOT MERGE Revert "WTF Logging for catching memory issue in Parcel"" into...
[android-x86/frameworks-base.git]
/
core
/
java
/
android
/
os
/
Parcel.java
diff --git
a/core/java/android/os/Parcel.java
b/core/java/android/os/Parcel.java
index
0a5e9a8
..
68a81ca
100644
(file)
--- a/
core/java/android/os/Parcel.java
+++ b/
core/java/android/os/Parcel.java
@@
-295,6
+295,7
@@
public final class Parcel {
private static native long nativeWriteFileDescriptor(long nativePtr, FileDescriptor val);
private static native byte[] nativeCreateByteArray(long nativePtr);
private static native long nativeWriteFileDescriptor(long nativePtr, FileDescriptor val);
private static native byte[] nativeCreateByteArray(long nativePtr);
+ private static native boolean nativeReadByteArray(long nativePtr, byte[] dest, int destLen);
private static native byte[] nativeReadBlob(long nativePtr);
@FastNative
private static native int nativeReadInt(long nativePtr);
private static native byte[] nativeReadBlob(long nativePtr);
@FastNative
private static native int nativeReadInt(long nativePtr);
@@
-2211,11
+2212,8
@@
public final class Parcel {
* given byte array.
*/
public final void readByteArray(byte[] val) {
* given byte array.
*/
public final void readByteArray(byte[] val) {
- // TODO: make this a native method to avoid the extra copy.
- byte[] ba = createByteArray();
- if (ba.length == val.length) {
- System.arraycopy(ba, 0, val, 0, ba.length);
- } else {
+ boolean valid = nativeReadByteArray(mNativePtr, val, (val != null) ? val.length : 0);
+ if (!valid) {
throw new RuntimeException("bad array lengths");
}
}
throw new RuntimeException("bad array lengths");
}
}