Книга "Essential JNI: Java Native Interface" Роба Гордона містить наступний приклад коду для перетворення 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
істина.
Але книга Java Native Interface: Посібник та специфікація програміста (альтернативне посилання http://192.9.162.55/docs/books/jni/html/objtypes.html#5161
:) говорить:
Виклик ReleaseString-Chars необхідний, якщо GetStringChars встановив * isCopy на JNI_TRUE або JNI_FALSE. ReleaseStringChars або звільняє копію, або відкріплює екземпляр, залежно від того, повернув GetStringChars копію чи ні.
Я правильно вважаю, що це помилка в книзі Гордона?
str
визначено?