diff --git a/ext/standard/php3_var.h b/ext/standard/php3_var.h index 238a0a3cb3b..89ebb23bffc 100644 --- a/ext/standard/php3_var.h +++ b/ext/standard/php3_var.h @@ -35,7 +35,7 @@ PHP_FUNCTION(var_dump); PHP_FUNCTION(serialize); PHP_FUNCTION(unserialize); -void php3api_var_dump(pval *struc, int level); +void php3api_var_dump(pval **struc, int level); void php3api_var_serialize(pval *buf, pval *struc); int php3api_var_unserialize(pval *rval, char **p, char *max); diff --git a/ext/standard/var.c b/ext/standard/var.c index 7bf00519f5e..8aaecedee7c 100644 --- a/ext/standard/var.c +++ b/ext/standard/var.c @@ -41,72 +41,74 @@ #include "php3_var.h" -void php3api_var_dump(pval *struc, int level) +void php3api_var_dump(pval **struc, int level) { ulong index; char *key; int i, c = 0; - pval *data; + pval **data; char buf[512]; - switch (struc->type) { + switch ((*struc)->type) { case IS_LONG: - i = sprintf(buf, "%*cint(%ld)\n", level, ' ', struc->value.lval); + i = sprintf(buf, "%*cint(%ld)\n", level, ' ', (*struc)->value.lval); PHPWRITE(&buf[1], i - 1); break; case IS_DOUBLE: - i = sprintf(buf, "%*cfloat(%g)\n", level, ' ', struc->value.dval); + i = sprintf(buf, "%*cfloat(%g)\n", level, ' ', (*struc)->value.dval); PHPWRITE(&buf[1], i - 1); break; case IS_STRING: - i = sprintf(buf, "%*cstring(%d) \"", level, ' ', struc->value.str.len); + i = sprintf(buf, "%*cstring(%d) \"", level, ' ', (*struc)->value.str.len); PHPWRITE(&buf[1], i - 1); - PHPWRITE(struc->value.str.val, struc->value.str.len); + PHPWRITE((*struc)->value.str.val, (*struc)->value.str.len); strcpy(buf, "\"\n"); PHPWRITE(buf, strlen(buf)); break; case IS_ARRAY: - i = sprintf(buf, "%*carray(%d) {\n", level, ' ', _php3_hash_num_elements(struc->value.ht)); + i = sprintf(buf, "%*carray(%d) {\n", level, ' ', _php3_hash_num_elements((*struc)->value.ht)); PHPWRITE(&buf[1], i - 1); goto head_done; case IS_OBJECT: - i = sprintf(buf, "%*cobject(%d) {\n", level, ' ', _php3_hash_num_elements(struc->value.ht)); + i = sprintf(buf, "%*cobject(%d) {\n", level, ' ', _php3_hash_num_elements((*struc)->value.ht)); PHPWRITE(&buf[1], i - 1); head_done: - _php3_hash_internal_pointer_reset(struc->value.ht); - for (;; _php3_hash_move_forward(struc->value.ht)) { - if ((i = _php3_hash_get_current_key(struc->value.ht, &key, &index)) == HASH_KEY_NON_EXISTANT) + _php3_hash_internal_pointer_reset((*struc)->value.ht); + for (;; _php3_hash_move_forward((*struc)->value.ht)) { + if ((i = _php3_hash_get_current_key((*struc)->value.ht, &key, &index)) == HASH_KEY_NON_EXISTANT) break; if (c > 0) { strcpy(buf, "\n"); PHPWRITE(buf, strlen(buf)); } c++; - if (_php3_hash_get_current_data(struc->value.ht, (void **) (&data)) != SUCCESS || !data || (data == struc)) + if (_php3_hash_get_current_data((*struc)->value.ht, (void **) (&data)) != SUCCESS || !data || (data == struc)) continue; switch (i) { case HASH_KEY_IS_LONG:{ - pval d; + pval *d = emalloc(sizeof(pval)); - d.type = IS_LONG; - d.value.lval = index; + d->type = IS_LONG; + d->value.lval = index; php3api_var_dump(&d, level + 2); + efree(d); } break; case HASH_KEY_IS_STRING:{ - pval d; + pval *d = emalloc(sizeof(pval)); - d.type = IS_STRING; - d.value.str.val = key; - d.value.str.len = strlen(key); + d->type = IS_STRING; + d->value.str.val = key; + d->value.str.len = strlen(key); php3api_var_dump(&d, level + 2); efree(key); + efree(d); } break; } @@ -130,7 +132,7 @@ PHP_FUNCTION(var_dump) if (ARG_COUNT(ht) != 1 || getParameters(ht, 1, &struc) == FAILURE) { WRONG_PARAM_COUNT; } - php3api_var_dump(struc, 1); + php3api_var_dump(&struc, 1); }