Книга Роберта Гордона «Essential JNI: собственный интерфейс Java» содержит следующий пример кода для преобразования jstring в строку C:
const char* utf_string;
jboolean isCopy;
utf_string = env->GetStringUTFChars(str, &isCopy);
/* ... use string ... */
if (isCopy == JNI_TRUE) {
env->ReleaseStringUTFChars(str, utf_string);
}
Обратите внимание, что он вызывает ReleaseStringUTFChars
только если isCopy
имеет значение true.
Но книга Собственный интерфейс Java: Руководство и спецификация для программистов (альтернативная ссылка: http://192.9.162.55/docs/books/jni/html/objtypes.html#5161
) гласит:
Вызов ReleaseString-Chars
необходимо ли GetStringChars имеет
установите * isCopy в JNI_TRUE или JNI_FALSE.
ReleaseStringChars либо освобождает
скопировать или открепить экземпляр, в зависимости
после того, как GetStringChars имеет
вернул копию или нет.
Я правильно предположил, что это ошибка в книге Гордона?