cvs: /php4/ext/java java.c
| From: | Sam Ruby | Date: | Wed, 15 Mar 2000 10:36:07 +0000 |
| Subject: | cvs: /php4/ext/java java.c | ||
| Groups: | php.version4 | ||
| Request: | Send a blank email to php-version4+get-12147@lists.php.net to get a copy of this message | ||
rubys Wed Mar 15 02:36:07 2000 EDT
Modified files:
/php4/ext/java java.c
Log:
Cleanup, better error recovery, easier configuration
Index: php4/ext/java/java.c
diff -u php4/ext/java/java.c:1.15 php4/ext/java/java.c:1.16
--- php4/ext/java/java.c:1.15 Sun Mar 12 17:11:35 2000
+++ php4/ext/java/java.c Wed Mar 15 02:35:37 2000
@@ -85,10 +85,12 @@
PHP_INI_BEGIN()
PHP_INI_ENTRY1("java.class.path",
NULL, PHP_INI_ALL, OnIniUpdate, &classpath)
+#ifndef JNI_11
PHP_INI_ENTRY1("java.home",
NULL, PHP_INI_ALL, OnIniUpdate, &javahome)
PHP_INI_ENTRY1("java.library.path",
NULL, PHP_INI_ALL, OnIniUpdate, &libpath)
+#endif
PHP_INI_END()
/***************************************************************************/
@@ -143,12 +145,6 @@
iniUpdated=0;
- if (!classpath) classpath = getenv("CLASSPATH");
-
-#ifndef PHP_WIN32
- if (!libpath) libpath = getenv("LD_LIBRARY_PATH");
-#endif
-
#ifdef JNI_12
vm_args.version = JNI_VERSION_1_2;
@@ -185,14 +181,19 @@
local_php_reflect = (*jenv)->FindClass(jenv, "net/php/reflect");
error = (*jenv)->ExceptionOccurred(jenv);
if (error) {
- jclass errClass = (*jenv)->GetObjectClass(jenv, error);
- jmethodID toString = (*jenv)->GetMethodID(jenv, errClass, "toString",
+ jclass errClass;
+ jmethodID toString;
+ jobject errString;
+ const char *errAsUTF;
+ jboolean isCopy;
+ (*jenv)->ExceptionClear(jenv);
+ errClass = (*jenv)->GetObjectClass(jenv, error);
+ toString = (*jenv)->GetMethodID(jenv, errClass, "toString",
"()Ljava/lang/String;");
- jobject errString = (*jenv)->CallObjectMethod(jenv, error, toString);
- const char *errAsUTF = (*jenv)->GetStringUTFChars(jenv, errString, 0);
+ errString = (*jenv)->CallObjectMethod(jenv, error, toString);
+ errAsUTF = (*jenv)->GetStringUTFChars(jenv, errString, &isCopy);
php_error(E_ERROR, "%s", errAsUTF);
- (*jenv)->ReleaseStringUTFChars(jenv, error, errAsUTF);
- (*jenv)->ExceptionClear(jenv);
+ if (isCopy) (*jenv)->ReleaseStringUTFChars(jenv, error, errAsUTF);
jvm_destroy();
return -1;
}
@@ -407,6 +408,14 @@
le_jobject = register_list_destructors(_php_java_destructor,NULL);
REGISTER_INI_ENTRIES();
+
+ if (!classpath) classpath = getenv("CLASSPATH");
+
+ if (!libpath) {
+ PLS_FETCH();
+ libpath=PG(extension_dir);
+ }
+
return SUCCESS;
}
@@ -444,13 +453,14 @@
JNIEXPORT void JNICALL Java_net_php_reflect_setResultFromString
(JNIEnv *jenv, jclass self, jlong result, jstring value)
{
- const char *valueAsUTF = (*jenv)->GetStringUTFChars(jenv, value, 0);
+ jboolean isCopy;
+ const char *valueAsUTF = (*jenv)->GetStringUTFChars(jenv, value, &isCopy);
pval *presult = (pval*)(long)result;
presult->type=IS_STRING;
presult->value.str.len=strlen(valueAsUTF);
presult->value.str.val=emalloc(presult->value.str.len+1);
strcpy(presult->value.str.val, valueAsUTF);
- (*jenv)->ReleaseStringUTFChars(jenv, value, valueAsUTF);
+ if (isCopy) (*jenv)->ReleaseStringUTFChars(jenv, value, valueAsUTF);
}
JNIEXPORT void JNICALL Java_net_php_reflect_setResultFromLong