[PATCH] ZTS fixes
| From: | Steph | Date: | Thu, 01 Sep 2005 20:15:05 +0000 |
| Subject: | [PATCH] ZTS fixes | ||
| Groups: | php.gtk.dev | ||
| Request: | Send a blank email to php-gtk-dev+get-1570@lists.php.net to get a copy of this message | ||
Andrei,
A few of these are just things that b0rk the win32 compiler, e.g. the
n_values thing we talked about the other night. But mostly it's pure ZTS
stuff.
More to follow shortly.
- Steph
Index: main/php_gtk_util.c =================================================================== RCS file: /repository/php-gtk/main/php_gtk_util.c,v retrieving revision 1.46 diff -u -r1.46 php_gtk_util.c --- main/php_gtk_util.c 28 Apr 2005 17:49:07 -0000 1.46 +++ main/php_gtk_util.c 1 Sep 2005 18:46:40 -0000 @@ -360,7 +360,6 @@ char *expected_type; char buf[1024]; char errorbuf[1024]; - TSRMLS_FETCH(); expected_type = parse_arg_impl(arg, va, spec, errorbuf, as_zval TSRMLS_CC); if (expected_type) { @@ -518,7 +517,7 @@ } va_start(va, format); - retval = php_gtk_parse_args_impl(min_args, format, &va, 0 TSRMLS_CC); + retval = php_gtk_parse_args_impl(min_args, format, &va, 0); va_end(va); *varargs = php_gtk_array_as_hash(args, argc, min_args, argc-min_args); efree(args); @@ -530,9 +529,10 @@ { zval ***args; int retval; + TSRMLS_FETCH(); args = php_gtk_hash_as_array(hash); - retval = parse_va_args(zend_hash_num_elements(Z_ARRVAL_P(hash)), args, format, va, quiet); + retval = parse_va_args(zend_hash_num_elements(Z_ARRVAL_P(hash)), args, format, va, quiet TSRMLS_CC); efree(args); return retval; @@ -828,10 +828,10 @@ for (;;) { switch (*(*format)++) { case '(': - return php_gtk_build_hash(result, format, va, ')', php_gtk_count_specs(*format, ')') TSRMLS_CC); + return php_gtk_build_hash(result, format, va, ')', php_gtk_count_specs(*format, ')' TSRMLS_CC) TSRMLS_CC); case '{': - return php_gtk_build_hash(result, format, va, '}', php_gtk_count_specs(*format, '}') TSRMLS_CC); + return php_gtk_build_hash(result, format, va, '}', php_gtk_count_specs(*format, '}' TSRMLS_CC) TSRMLS_CC); case 'b': MAKE_ZVAL_IF_NULL(*result); Index: main/phpg_gobject.c =================================================================== RCS file: /repository/php-gtk/main/phpg_gobject.c,v retrieving revision 1.46 diff -u -r1.46 phpg_gobject.c --- main/phpg_gobject.c 30 Jul 2005 20:52:52 -0000 1.46 +++ main/phpg_gobject.c 1 Sep 2005 18:51:44 -0000 @@ -342,7 +342,7 @@ if (extra) { zval_ptr_dtor(&extra); } - phpg_gobject_watch_closure(this_ptr, closure); + phpg_gobject_watch_closure(this_ptr, closure TSRMLS_CC); handler_id = g_signal_connect_closure_by_id(obj, signal_id, detail, closure, after); RETURN_LONG(handler_id); } @@ -642,17 +642,17 @@ add_next_index_long(return_value, query.signal_id); add_next_index_string(return_value, (char *)query.signal_name, 1); MAKE_STD_ZVAL(temp); - phpg_gtype_new(temp, query.itype); + phpg_gtype_new(temp, query.itype TSRMLS_CC); add_next_index_zval(return_value, temp); add_next_index_long(return_value, query.signal_flags); MAKE_STD_ZVAL(temp); - phpg_gtype_new(temp, query.return_type); + phpg_gtype_new(temp, query.return_type TSRMLS_CC); add_next_index_zval(return_value, temp); MAKE_STD_ZVAL(params); array_init(params); for (i = 0; i < query.n_params; i++) { MAKE_STD_ZVAL(temp); - phpg_gtype_new(temp, query.param_types[i]); + phpg_gtype_new(temp, query.param_types[i] TSRMLS_CC); add_next_index_zval(params, temp); } add_next_index_zval(return_value, params); Index: main/phpg_gtype.c =================================================================== RCS file: /repository/php-gtk/main/phpg_gtype.c,v retrieving revision 1.16 diff -u -r1.16 phpg_gtype.c --- main/phpg_gtype.c 26 Apr 2005 01:44:13 -0000 1.16 +++ main/phpg_gtype.c 1 Sep 2005 20:08:49 -0000 @@ -92,7 +92,6 @@ PHP_GTK_API void phpg_gtype_new(zval *zobj, GType type TSRMLS_DC) { phpg_gtype_t *object; - TSRMLS_FETCH(); assert(zobj != NULL); object_init_ex(zobj, gtype_ce); @@ -116,6 +115,7 @@ PHP_GTK_API GType phpg_gtype_from_zval(zval *value) { GType type; + TSRMLS_FETCH(); if (!value) { php_error(E_WARNING, "PHP-GTK internal error: could not get typecode from value"); Index: main/phpg_gvalue.c =================================================================== RCS file: /repository/php-gtk/main/phpg_gvalue.c,v retrieving revision 1.22 diff -u -r1.22 phpg_gvalue.c --- main/phpg_gvalue.c 25 Aug 2005 04:18:52 -0000 1.22 +++ main/phpg_gvalue.c 1 Sep 2005 19:10:24 -0000 @@ -148,11 +148,14 @@ } else if (G_VALUE_HOLDS(gval, G_TYPE_VALUE_ARRAY)) { int i; zval *item; + int value_count; GValueArray *array = (GValueArray *) g_value_get_boxed(gval); MAKE_ZVAL_IF_NULL(*value); array_init(*value); - for (i = 0; i < array->n_values; i++) { + value_count = array->n_values; + + for (i = 0; i < value_count; i++) { MAKE_STD_ZVAL(item); phpg_gvalue_to_zval(array->values + i, &item, copy_boxed TSRMLS_CC); add_next_index_zval(*value, item); @@ -334,12 +337,15 @@ PHP_GTK_API zval *phpg_gvalues_to_array(const GValue *values, uint n_values) { zval *hash; - zval *item; + zval *item = NULL; int i; + int value_count; MAKE_STD_ZVAL(hash); array_init(hash); - for (i = 0; i < n_values; i++) { + value_count = n_values; + + for (i = 0; i < value_count; i++) { //item = phpg_gvalue_to_zval(&values[i], FALSE); if (!item) { MAKE_STD_ZVAL(item); Index: main/phpg_support.c =================================================================== RCS file: /repository/php-gtk/main/phpg_support.c,v retrieving revision 1.9 diff -u -r1.9 phpg_support.c --- main/phpg_support.c 16 May 2005 21:00:03 -0000 1.9 +++ main/phpg_support.c 1 Sep 2005 19:14:18 -0000 @@ -125,7 +125,7 @@ zend_hash_get_current_data(pi_hash, (void **)&pi) == SUCCESS; zend_hash_move_forward(pi_hash)) { - ret = pi->read(poh, &result); + ret = pi->read(poh, &result TSRMLS_CC); if (ret == SUCCESS) { ALLOC_ZVAL(result_ptr); *result_ptr = result; @@ -310,6 +310,7 @@ char *enum_name; int i, j; int prefix_len = 0; + int value_count; phpg_return_if_fail(ce != NULL); phpg_return_if_fail(g_type_is_a(gtype, G_TYPE_ENUM)); @@ -319,7 +320,9 @@ } eclass = G_ENUM_CLASS(g_type_class_ref(gtype)); - for (i = 0; i < eclass->n_values; i++) { + value_count = eclass->n_values; + + for (i = 0; i < value_count; i++) { zval *val; val = (zval *)malloc(sizeof(zval)); @@ -347,6 +350,7 @@ char *enum_name; int i, j; int prefix_len = 0; + int value_count; phpg_return_if_fail(ce != NULL); phpg_return_if_fail(g_type_is_a(gtype, G_TYPE_FLAGS)); @@ -356,7 +360,9 @@ } eclass = G_FLAGS_CLASS(g_type_class_ref(gtype)); - for (i = 0; i < eclass->n_values; i++) { + value_count = eclass->n_values; + + for (i = 0; i < value_count; i++) { zval *val; val = (zval *)malloc(sizeof(zval)); @@ -433,7 +439,7 @@ g_free(ifaces); } - phpg_register_int_constant(ce, "gtype", sizeof("gtype")-1, gtype TSRMLS_CC); + phpg_register_int_constant(ce, "gtype", sizeof("gtype")-1, gtype); return ce; }
Index: main/php_gtk_util.c =================================================================== RCS file: /repository/php-gtk/main/php_gtk_util.c,v retrieving revision 1.46 diff -u -r1.46 php_gtk_util.c --- main/php_gtk_util.c 28 Apr 2005 17:49:07 -0000 1.46 +++ main/php_gtk_util.c 1 Sep 2005 18:46:40 -0000 @@ -360,7 +360,6 @@ char *expected_type; char buf[1024]; char errorbuf[1024]; - TSRMLS_FETCH(); expected_type = parse_arg_impl(arg, va, spec, errorbuf, as_zval TSRMLS_CC); if (expected_type) { @@ -518,7 +517,7 @@ } va_start(va, format); - retval = php_gtk_parse_args_impl(min_args, format, &va, 0 TSRMLS_CC); + retval = php_gtk_parse_args_impl(min_args, format, &va, 0); va_end(va); *varargs = php_gtk_array_as_hash(args, argc, min_args, argc-min_args); efree(args); @@ -530,9 +529,10 @@ { zval ***args; int retval; + TSRMLS_FETCH(); args = php_gtk_hash_as_array(hash); - retval = parse_va_args(zend_hash_num_elements(Z_ARRVAL_P(hash)), args, format, va, quiet); + retval = parse_va_args(zend_hash_num_elements(Z_ARRVAL_P(hash)), args, format, va, quiet TSRMLS_CC); efree(args); return retval; @@ -828,10 +828,10 @@ for (;;) { switch (*(*format)++) { case '(': - return php_gtk_build_hash(result, format, va, ')', php_gtk_count_specs(*format, ')') TSRMLS_CC); + return php_gtk_build_hash(result, format, va, ')', php_gtk_count_specs(*format, ')' TSRMLS_CC) TSRMLS_CC); case '{': - return php_gtk_build_hash(result, format, va, '}', php_gtk_count_specs(*format, '}') TSRMLS_CC); + return php_gtk_build_hash(result, format, va, '}', php_gtk_count_specs(*format, '}' TSRMLS_CC) TSRMLS_CC); case 'b': MAKE_ZVAL_IF_NULL(*result); Index: main/phpg_gobject.c =================================================================== RCS file: /repository/php-gtk/main/phpg_gobject.c,v retrieving revision 1.46 diff -u -r1.46 phpg_gobject.c --- main/phpg_gobject.c 30 Jul 2005 20:52:52 -0000 1.46 +++ main/phpg_gobject.c 1 Sep 2005 18:51:44 -0000 @@ -342,7 +342,7 @@ if (extra) { zval_ptr_dtor(&extra); } - phpg_gobject_watch_closure(this_ptr, closure); + phpg_gobject_watch_closure(this_ptr, closure TSRMLS_CC); handler_id = g_signal_connect_closure_by_id(obj, signal_id, detail, closure, after); RETURN_LONG(handler_id); } @@ -642,17 +642,17 @@ add_next_index_long(return_value, query.signal_id); add_next_index_string(return_value, (char *)query.signal_name, 1); MAKE_STD_ZVAL(temp); - phpg_gtype_new(temp, query.itype); + phpg_gtype_new(temp, query.itype TSRMLS_CC); add_next_index_zval(return_value, temp); add_next_index_long(return_value, query.signal_flags); MAKE_STD_ZVAL(temp); - phpg_gtype_new(temp, query.return_type); + phpg_gtype_new(temp, query.return_type TSRMLS_CC); add_next_index_zval(return_value, temp); MAKE_STD_ZVAL(params); array_init(params); for (i = 0; i < query.n_params; i++) { MAKE_STD_ZVAL(temp); - phpg_gtype_new(temp, query.param_types[i]); + phpg_gtype_new(temp, query.param_types[i] TSRMLS_CC); add_next_index_zval(params, temp); } add_next_index_zval(return_value, params); Index: main/phpg_gtype.c =================================================================== RCS file: /repository/php-gtk/main/phpg_gtype.c,v retrieving revision 1.16 diff -u -r1.16 phpg_gtype.c --- main/phpg_gtype.c 26 Apr 2005 01:44:13 -0000 1.16 +++ main/phpg_gtype.c 1 Sep 2005 20:08:49 -0000 @@ -92,7 +92,6 @@ PHP_GTK_API void phpg_gtype_new(zval *zobj, GType type TSRMLS_DC) { phpg_gtype_t *object; - TSRMLS_FETCH(); assert(zobj != NULL); object_init_ex(zobj, gtype_ce); @@ -116,6 +115,7 @@ PHP_GTK_API GType phpg_gtype_from_zval(zval *value) { GType type; + TSRMLS_FETCH(); if (!value) { php_error(E_WARNING, "PHP-GTK internal error: could not get typecode from value"); Index: main/phpg_gvalue.c =================================================================== RCS file: /repository/php-gtk/main/phpg_gvalue.c,v retrieving revision 1.22 diff -u -r1.22 phpg_gvalue.c --- main/phpg_gvalue.c 25 Aug 2005 04:18:52 -0000 1.22 +++ main/phpg_gvalue.c 1 Sep 2005 19:10:24 -0000 @@ -148,11 +148,14 @@ } else if (G_VALUE_HOLDS(gval, G_TYPE_VALUE_ARRAY)) { int i; zval *item; + int value_count; GValueArray *array = (GValueArray *) g_value_get_boxed(gval); MAKE_ZVAL_IF_NULL(*value); array_init(*value); - for (i = 0; i < array->n_values; i++) { + value_count = array->n_values; + + for (i = 0; i < value_count; i++) { MAKE_STD_ZVAL(item); phpg_gvalue_to_zval(array->values + i, &item, copy_boxed TSRMLS_CC); add_next_index_zval(*value, item); @@ -334,12 +337,15 @@ PHP_GTK_API zval *phpg_gvalues_to_array(const GValue *values, uint n_values) { zval *hash; - zval *item; + zval *item = NULL; int i; + int value_count; MAKE_STD_ZVAL(hash); array_init(hash); - for (i = 0; i < n_values; i++) { + value_count = n_values; + + for (i = 0; i < value_count; i++) { //item = phpg_gvalue_to_zval(&values[i], FALSE); if (!item) { MAKE_STD_ZVAL(item); Index: main/phpg_support.c =================================================================== RCS file: /repository/php-gtk/main/phpg_support.c,v retrieving revision 1.9 diff -u -r1.9 phpg_support.c --- main/phpg_support.c 16 May 2005 21:00:03 -0000 1.9 +++ main/phpg_support.c 1 Sep 2005 19:14:18 -0000 @@ -125,7 +125,7 @@ zend_hash_get_current_data(pi_hash, (void **)&pi) == SUCCESS; zend_hash_move_forward(pi_hash)) { - ret = pi->read(poh, &result); + ret = pi->read(poh, &result TSRMLS_CC); if (ret == SUCCESS) { ALLOC_ZVAL(result_ptr); *result_ptr = result; @@ -310,6 +310,7 @@ char *enum_name; int i, j; int prefix_len = 0; + int value_count; phpg_return_if_fail(ce != NULL); phpg_return_if_fail(g_type_is_a(gtype, G_TYPE_ENUM)); @@ -319,7 +320,9 @@ } eclass = G_ENUM_CLASS(g_type_class_ref(gtype)); - for (i = 0; i < eclass->n_values; i++) { + value_count = eclass->n_values; + + for (i = 0; i < value_count; i++) { zval *val; val = (zval *)malloc(sizeof(zval)); @@ -347,6 +350,7 @@ char *enum_name; int i, j; int prefix_len = 0; + int value_count; phpg_return_if_fail(ce != NULL); phpg_return_if_fail(g_type_is_a(gtype, G_TYPE_FLAGS)); @@ -356,7 +360,9 @@ } eclass = G_FLAGS_CLASS(g_type_class_ref(gtype)); - for (i = 0; i < eclass->n_values; i++) { + value_count = eclass->n_values; + + for (i = 0; i < value_count; i++) { zval *val; val = (zval *)malloc(sizeof(zval)); @@ -433,7 +439,7 @@ g_free(ifaces); } - phpg_register_int_constant(ce, "gtype", sizeof("gtype")-1, gtype TSRMLS_CC); + phpg_register_int_constant(ce, "gtype", sizeof("gtype")-1, gtype); return ce; }