--- a/trunk/php-java-bridge/java.c +++ b/trunk/php-java-bridge/java.c @@ -7,6 +7,8 @@ * zend engine 1 and 2. * */ + +#include "php_java.h" /* wait */ #include <sys/types.h> @@ -17,7 +19,6 @@ #include <assert.h> #include <errno.h> -#include "php_java.h" #include "php_globals.h" #include "ext/standard/info.h" @@ -698,13 +699,6 @@ } return SUCCESS; } -static PHP_INI_MH(OnIniExtJavaCompatibility) -{ - if (new_value) { - EXT_GLOBAL(update_compatibility)(new_value); - } - return SUCCESS; -} static PHP_INI_MH(OnIniPersistentConnections) { if(new_value) { @@ -801,7 +795,6 @@ PHP_INI_ENTRY(EXT_NAME()/**/".log_level", NULL, PHP_INI_SYSTEM, OnIniLogLevel) PHP_INI_ENTRY(EXT_NAME()/**/".log_file", NULL, PHP_INI_SYSTEM, OnIniLogFile) - PHP_INI_ENTRY(EXT_NAME()/**/".ext_java_compatibility", NULL, PHP_INI_SYSTEM, OnIniExtJavaCompatibility) PHP_INI_ENTRY(EXT_NAME()/**/".persistent_connections", NULL, PHP_INI_SYSTEM, OnIniPersistentConnections) PHP_INI_END() @@ -1255,6 +1248,16 @@ case IS_STRING: (*jenv)->writeInvokeBegin(jenv, 0, "castToString", 0, 'I', writeobj); (*jenv)->writeObject(jenv, obj); +#ifdef ZEND_ENGINE_2 + if (instanceof_function(Z_OBJCE_P(readobj), EXT_GLOBAL(exception_class_entry) TSRMLS_CC)) { + zval *trace = 0; + zval fname; + ZVAL_STRINGL(&fname, "gettraceasstring", sizeof("gettraceasstring")-1, 0); + call_user_function_ex(0, &readobj, &fname, &trace, 0, 0, 1, 0 TSRMLS_CC); + if(trace) + (*jenv)->writeString(jenv, Z_STRVAL_P(trace), Z_STRLEN_P(trace)); + } +#endif obj = (*jenv)->writeInvokeEnd(jenv); break; case IS_BOOL: @@ -1347,7 +1350,7 @@ *data = &iterator->current_object; } -static int iterator_current_key(zend_object_iterator *iter, char **str_key, uint *str_key_len, ulong *int_key TSRMLS_DC) +static int iterator_current_key(zend_object_iterator *iter, zstr *str_key, uint *str_key_len, ulong *int_key TSRMLS_DC) { vm_iterator *iterator = (vm_iterator *)iter; zval *presult; @@ -1364,9 +1367,9 @@ if(iterator->type == HASH_KEY_IS_STRING) { size_t strlen = Z_STRLEN_P(presult); - *str_key = emalloc(strlen+1); - memcpy(*str_key, Z_STRVAL_P(presult), strlen); - (*str_key)[strlen]=0; + ZSTR_S(*str_key) = emalloc(strlen+1); + memcpy(ZSTR_S(*str_key), Z_STRVAL_P(presult), strlen); + (ZSTR_S(*str_key))[strlen]=0; // len+1 is due to a bug in php. It assignes the len with // key->value.str.len = str_key_len-1; In the evaluator the @@ -1484,15 +1487,9 @@ static void make_lambda(zend_internal_function *f, void (*handler)(INTERNAL_FUNCTION_PARAMETERS)) { + memset(f, 0, sizeof*f); f->type = ZEND_INTERNAL_FUNCTION; f->handler = handler; - f->function_name = NULL; - f->scope = NULL; - f->fn_flags = 0; - f->prototype = NULL; - f->num_args = 0; - f->arg_info = NULL; - f->pass_rest_by_reference = 0; } #else @@ -1800,11 +1797,6 @@ if(EXT_GLOBAL(option_set_by_user) (U_SERVLET, EXT_GLOBAL(ini_user))) php_info_print_table_row(2, EXT_NAME()/**/".servlet", JG(servlet)?JG(servlet):off); #endif -#ifndef ZEND_ENGINE_2 - php_info_print_table_row(2, EXT_NAME()/**/".ext_java_compatibility", on); -#else - php_info_print_table_row(2, EXT_NAME()/**/".ext_java_compatibility", EXT_GLOBAL(cfg)->extJavaCompatibility?on:off); -#endif php_info_print_table_row(2, EXT_NAME()/**/".persistent_connections", EXT_GLOBAL(cfg)->persistent_connections?on:off); if(!server || is_local) { if(!EXT_GLOBAL(cfg)->policy) {