diff options
author | Elliott Hughes <enh@google.com> | 2011-04-12 16:12:09 -0700 |
---|---|---|
committer | Elliott Hughes <enh@google.com> | 2011-04-13 10:34:23 -0700 |
commit | f17b971a75577a3a0e5ab574618e0756d167f5d4 (patch) | |
tree | 9a6577102a098b8d526ec634846aa5da35de4288 /core/jni/android_net_TrafficStats.cpp | |
parent | 83b61471c39fc4d5afc9f56c3ed771a14c8ad194 (diff) | |
download | frameworks_base-f17b971a75577a3a0e5ab574618e0756d167f5d4.zip frameworks_base-f17b971a75577a3a0e5ab574618e0756d167f5d4.tar.gz frameworks_base-f17b971a75577a3a0e5ab574618e0756d167f5d4.tar.bz2 |
More native code cleanup.
Use ScopedUtfChars (fixes a leak in TrafficStats, and fixes a crash in Wifi in
a case where GetStringChars could have been called with a pending exception).
Change-Id: I3465ff392b4038dfdafa6af80ec1314cc6d6a11c
Diffstat (limited to 'core/jni/android_net_TrafficStats.cpp')
-rw-r--r-- | core/jni/android_net_TrafficStats.cpp | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/core/jni/android_net_TrafficStats.cpp b/core/jni/android_net_TrafficStats.cpp index 0c84f11..203b5ef 100644 --- a/core/jni/android_net_TrafficStats.cpp +++ b/core/jni/android_net_TrafficStats.cpp @@ -25,6 +25,7 @@ #include <android_runtime/AndroidRuntime.h> #include <cutils/logger.h> #include <jni.h> +#include <ScopedUtfChars.h> #include <utils/misc.h> #include <utils/Log.h> @@ -130,13 +131,14 @@ static jlong getMobileRxBytes(JNIEnv* env, jobject clazz) { "/sys/class/net/ppp0/statistics/rx_bytes"); } -static jlong getData(JNIEnv* env, char *what, jstring interface) { - char filename[80]; - jboolean isCopy; - - const char *interfaceStr = env->GetStringUTFChars(interface, &isCopy); - snprintf(filename, sizeof(filename), "/sys/class/net/%s/statistics/%s", interfaceStr, what); +static jlong getData(JNIEnv* env, const char* what, jstring javaInterface) { + ScopedUtfChars interface(env, javaInterface); + if (interface.c_str() == NULL) { + return -1; + } + char filename[80]; + snprintf(filename, sizeof(filename), "/sys/class/net/%s/statistics/%s", interface.c_str(), what); return readNumber(filename); } |