diff options
| author | Steve Block <steveblock@google.com> | 2010-11-01 13:16:30 +0000 |
|---|---|---|
| committer | Steve Block <steveblock@google.com> | 2010-11-01 15:49:26 +0000 |
| commit | f947415b59bf9cc2a85a73ef8b3f3d99c9c65199 (patch) | |
| tree | d10c545238bdcbe469f7ef2734e95863d635afc8 /WebKit/android/WebCoreSupport | |
| parent | 5f2149d97da7a452dc97a39cfe9882436cc3dbc7 (diff) | |
| download | external_webkit-f947415b59bf9cc2a85a73ef8b3f3d99c9c65199.zip external_webkit-f947415b59bf9cc2a85a73ef8b3f3d99c9c65199.tar.gz external_webkit-f947415b59bf9cc2a85a73ef8b3f3d99c9c65199.tar.bz2 | |
Fix WebCoreStringToJString() to not delete the local reference to the new jstring
The JNI spec allows for local objects to be GC'ed before the JNI frame
returns, so this is dangerous.
Also rename the method to WtfStringToJstring() to match the existing
jstringToWtfString() and update call sites to JNIEnv::NewString() to
make use of it.
Change-Id: I84aa25ba1aca2aee346bf6e3d83a58afc3a95219
Diffstat (limited to 'WebKit/android/WebCoreSupport')
| -rw-r--r-- | WebKit/android/WebCoreSupport/MediaPlayerPrivateAndroid.cpp | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/WebKit/android/WebCoreSupport/MediaPlayerPrivateAndroid.cpp b/WebKit/android/WebCoreSupport/MediaPlayerPrivateAndroid.cpp index 9711d26..c05a417 100644 --- a/WebKit/android/WebCoreSupport/MediaPlayerPrivateAndroid.cpp +++ b/WebKit/android/WebCoreSupport/MediaPlayerPrivateAndroid.cpp @@ -178,7 +178,7 @@ public: return; m_paused = false; - jstring jUrl = env->NewString((unsigned short *)m_url.characters(), m_url.length()); + jstring jUrl = WtfStringToJstring(env, m_url); env->CallVoidMethod(m_glue->m_javaProxy, m_glue->m_play, jUrl); env->DeleteLocalRef(jUrl); @@ -191,7 +191,7 @@ public: if (!env || !m_glue->m_javaProxy || !m_posterUrl.length()) return; // Send the poster - jstring jUrl = env->NewString((unsigned short *)m_posterUrl.characters(), m_posterUrl.length()); + jstring jUrl = WtfStringToJstring(env, m_posterUrl); env->CallVoidMethod(m_glue->m_javaProxy, m_glue->m_loadPoster, jUrl); env->DeleteLocalRef(jUrl); } @@ -297,7 +297,7 @@ public: // Send the poster jstring jUrl = 0; if (m_posterUrl.length()) - jUrl = env->NewString((unsigned short *)m_posterUrl.characters(), m_posterUrl.length()); + jUrl = WtfStringToJstring(env, m_posterUrl); // Sending a NULL jUrl allows the Java side to try to load the default poster. env->CallVoidMethod(m_glue->m_javaProxy, m_glue->m_loadPoster, jUrl); if (jUrl) @@ -324,7 +324,7 @@ public: if (!m_glue->m_javaProxy) return; - jstring jUrl = env->NewString((unsigned short *)m_url.characters(), m_url.length()); + jstring jUrl = WtfStringToJstring(env, m_url); // start loading the data asynchronously env->CallVoidMethod(m_glue->m_javaProxy, m_glue->m_setDataSource, jUrl); env->DeleteLocalRef(jUrl); |
