diff options
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 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); } |