Use GetStringUTFRegion for filename

Change-Id: I2e9ad092ccf4c23c1c6b71916c962994314d37b6
main
Ken Wakasa 2012-08-09 23:23:35 +09:00
parent 9e0c711a62
commit 04a89132e9
1 changed files with 7 additions and 6 deletions

View File

@ -36,7 +36,7 @@ namespace latinime {
class ProximityInfo; class ProximityInfo;
void releaseDictBuf(void *dictBuf, const size_t length, int fd); static void releaseDictBuf(void *dictBuf, const size_t length, int fd);
static jlong latinime_BinaryDictionary_open(JNIEnv *env, jobject object, static jlong latinime_BinaryDictionary_open(JNIEnv *env, jobject object,
jstring sourceDir, jlong dictOffset, jlong dictSize, jstring sourceDir, jlong dictOffset, jlong dictSize,
@ -44,11 +44,14 @@ static jlong latinime_BinaryDictionary_open(JNIEnv *env, jobject object,
jint maxPredictions) { jint maxPredictions) {
PROF_OPEN; PROF_OPEN;
PROF_START(66); PROF_START(66);
const char *sourceDirChars = env->GetStringUTFChars(sourceDir, 0); const jsize sourceDirUtf8Length = env->GetStringUTFLength(sourceDir);
if (sourceDirChars == 0) { if (sourceDirUtf8Length <= 0) {
AKLOGE("DICT: Can't get sourceDir string"); AKLOGE("DICT: Can't get sourceDir string");
return 0; return 0;
} }
char sourceDirChars[sourceDirUtf8Length + 1];
env->GetStringUTFRegion(sourceDir, 0, env->GetStringLength(sourceDir), sourceDirChars);
sourceDirChars[sourceDirUtf8Length] = '\0';
int fd = 0; int fd = 0;
void *dictBuf = 0; void *dictBuf = 0;
int adjust = 0; int adjust = 0;
@ -98,8 +101,6 @@ static jlong latinime_BinaryDictionary_open(JNIEnv *env, jobject object,
return 0; return 0;
} }
#endif // USE_MMAP_FOR_DICTIONARY #endif // USE_MMAP_FOR_DICTIONARY
env->ReleaseStringUTFChars(sourceDir, sourceDirChars);
if (!dictBuf) { if (!dictBuf) {
AKLOGE("DICT: dictBuf is null"); AKLOGE("DICT: dictBuf is null");
return 0; return 0;
@ -230,7 +231,7 @@ static void latinime_BinaryDictionary_close(JNIEnv *env, jobject object, jlong d
delete dictionary; delete dictionary;
} }
void releaseDictBuf(void *dictBuf, const size_t length, int fd) { static void releaseDictBuf(void *dictBuf, const size_t length, int fd) {
#ifdef USE_MMAP_FOR_DICTIONARY #ifdef USE_MMAP_FOR_DICTIONARY
int ret = munmap(dictBuf, length); int ret = munmap(dictBuf, length);
if (ret != 0) { if (ret != 0) {