summaryrefslogtreecommitdiffstats
path: root/core/jni/android_net_TrafficStats.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'core/jni/android_net_TrafficStats.cpp')
-rw-r--r--core/jni/android_net_TrafficStats.cpp14
1 files changed, 8 insertions, 6 deletions
diff --git a/core/jni/android_net_TrafficStats.cpp b/core/jni/android_net_TrafficStats.cpp
index 12150b4..d54981e 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>
@@ -147,13 +148,14 @@ static jlong getMobileRxBytes(JNIEnv* env, jobject clazz) {
return getAll(mobile_iface_list, "rx_bytes");
}
-static jlong getData(JNIEnv* env, const 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);
}