summaryrefslogtreecommitdiffstats
path: root/core/jni/android_emoji_EmojiFactory.cpp
diff options
context:
space:
mode:
authorYou Kim <you.kim72@gmail.com>2012-12-11 06:06:25 +0900
committerPhantomGamers <projectsundergaming@gmail.com>2012-12-24 23:52:10 -0500
commitdba8a2a5b59b2d235ca2948a3577d29c88734320 (patch)
treefc36b5557b9d3f27888e73b708a99b29fb3337d8 /core/jni/android_emoji_EmojiFactory.cpp
parentd263591bd14516f0144f7957114e316bfa7d12fe (diff)
downloadframeworks_base-dba8a2a5b59b2d235ca2948a3577d29c88734320.zip
frameworks_base-dba8a2a5b59b2d235ca2948a3577d29c88734320.tar.gz
frameworks_base-dba8a2a5b59b2d235ca2948a3577d29c88734320.tar.bz2
Possible leak in android_emoji_EmojiFactory_newInstance
jchars is not released correctly if factory is NULL. In addition, unnecessary string conversion removed. Change-Id: I3ea58391dfe7a96ea6d6ae61bb0867a2d8d49fb0
Diffstat (limited to 'core/jni/android_emoji_EmojiFactory.cpp')
-rw-r--r--core/jni/android_emoji_EmojiFactory.cpp14
1 files changed, 5 insertions, 9 deletions
diff --git a/core/jni/android_emoji_EmojiFactory.cpp b/core/jni/android_emoji_EmojiFactory.cpp
index a658561..4383997 100644
--- a/core/jni/android_emoji_EmojiFactory.cpp
+++ b/core/jni/android_emoji_EmojiFactory.cpp
@@ -3,8 +3,7 @@
#define LOG_TAG "EmojiFactory_jni"
#include <utils/Log.h>
-#include <utils/String8.h>
-#include <utils/String16.h>
+#include <ScopedUtfChars.h>
#include "EmojiFactory.h"
#include <nativehelper/JNIHelp.h>
@@ -125,16 +124,13 @@ static jobject android_emoji_EmojiFactory_newInstance(
return NULL;
}
- const jchar* jchars = env->GetStringChars(name, NULL);
- jsize len = env->GetStringLength(name);
- String8 str(String16(jchars, len));
+ ScopedUtfChars nameUtf(env, name);
- EmojiFactory *factory = gCaller->TryCallGetImplementation(str.string());
+ EmojiFactory *factory = gCaller->TryCallGetImplementation(nameUtf.c_str());
// EmojiFactory *factory = EmojiFactory::GetImplementation(str.string());
if (NULL == factory) {
return NULL;
}
- env->ReleaseStringChars(name, jchars);
return create_java_EmojiFactory(env, factory, name);
}
@@ -151,8 +147,8 @@ static jobject android_emoji_EmojiFactory_newAvailableInstance(
if (NULL == factory) {
return NULL;
}
- String16 name_16(String8(factory->Name()));
- jstring jname = env->NewString(name_16.string(), name_16.size());
+
+ jstring jname = env->NewStringUTF(factory->Name());
if (NULL == jname) {
return NULL;
}