diff options
Diffstat (limited to 'sapi/phpdbg/phpdbg_opcode.c')
-rw-r--r-- | sapi/phpdbg/phpdbg_opcode.c | 40 |
1 files changed, 21 insertions, 19 deletions
diff --git a/sapi/phpdbg/phpdbg_opcode.c b/sapi/phpdbg/phpdbg_opcode.c index b64fa5c491..8a58a44f0b 100644 --- a/sapi/phpdbg/phpdbg_opcode.c +++ b/sapi/phpdbg/phpdbg_opcode.c @@ -34,12 +34,14 @@ static inline char *phpdbg_decode_op(zend_op_array *ops, znode_op *op, uint32_t switch (type) { case IS_CV: { zend_string *var = ops->vars[EX_VAR_TO_NUM(op->var)]; - asprintf(&decode, "$%.*s%c", ZSTR_LEN(var) <= 19 ? (int) ZSTR_LEN(var) : 18, ZSTR_VAL(var), ZSTR_LEN(var) <= 19 ? 0 : '+'); + spprintf(&decode, 0, "$%.*s%c", + ZSTR_LEN(var) <= 19 ? (int) ZSTR_LEN(var) : 18, + ZSTR_VAL(var), ZSTR_LEN(var) <= 19 ? 0 : '+'); } break; case IS_VAR: case IS_TMP_VAR: { - asprintf(&decode, "@%" PRIu32, EX_VAR_TO_NUM(op->var) - ops->last_var); + spprintf(&decode, 0, "@%td", EX_VAR_TO_NUM(op->var) - ops->last_var); } break; case IS_CONST: { zval *literal = RT_CONSTANT(ops, *op); @@ -58,13 +60,13 @@ char *phpdbg_decode_opline(zend_op_array *ops, zend_op *op) /*{{{ */ switch (op->opcode) { case ZEND_FAST_CALL: if (op->extended_value != 0) { - asprintf(&decode[0], "FAST_CALL<%s>", + spprintf(&decode[0], 0, "FAST_CALL<%s>", op->extended_value == ZEND_FAST_CALL_FROM_CATCH ? "FROM_CATCH" : "FROM_FINALLY"); } break; case ZEND_FAST_RET: if (op->extended_value != 0) { - asprintf(&decode[0], "FAST_RET<%s>", + spprintf(&decode[0], 0, "FAST_RET<%s>", op->extended_value == ZEND_FAST_RET_TO_CATCH ? "TO_CATCH" : "TO_FINALLY"); } break; @@ -74,14 +76,14 @@ char *phpdbg_decode_opline(zend_op_array *ops, zend_op *op) /*{{{ */ switch (op->opcode) { case ZEND_JMP: case ZEND_FAST_CALL: - asprintf(&decode[1], "J%ld", OP_JMP_ADDR(op, op->op1) - ops->opcodes); + spprintf(&decode[1], 0, "J%td", OP_JMP_ADDR(op, op->op1) - ops->opcodes); break; case ZEND_INIT_FCALL: case ZEND_RECV: case ZEND_RECV_INIT: case ZEND_RECV_VARIADIC: - asprintf(&decode[1], "%" PRIu32, op->op1.num); + spprintf(&decode[1], 0, "%" PRIu32, op->op1.num); break; default: @@ -92,7 +94,9 @@ char *phpdbg_decode_opline(zend_op_array *ops, zend_op *op) /*{{{ */ /* OP2 */ switch (op->opcode) { case ZEND_JMPZNZ: - asprintf(&decode[2], "J%ld or J%ld", OP_JMP_ADDR(op, op->op2) - ops->opcodes, ZEND_OFFSET_TO_OPLINE(op, op->extended_value) - ops->opcodes); + spprintf(&decode[2], 0, "J%td or J%td", + OP_JMP_ADDR(op, op->op2) - ops->opcodes, + ZEND_OFFSET_TO_OPLINE(op, op->extended_value) - ops->opcodes); break; case ZEND_JMPZ: @@ -101,13 +105,13 @@ char *phpdbg_decode_opline(zend_op_array *ops, zend_op *op) /*{{{ */ case ZEND_JMPNZ_EX: case ZEND_JMP_SET: case ZEND_ASSERT_CHECK: - asprintf(&decode[2], "J%ld", OP_JMP_ADDR(op, op->op2) - ops->opcodes); + spprintf(&decode[2], 0, "J%td", OP_JMP_ADDR(op, op->op2) - ops->opcodes); break; case ZEND_FAST_CALL: case ZEND_FAST_RET: if (op->extended_value != 0) { - asprintf(&decode[2], "J%" PRIu32, op->op2.opline_num); + spprintf(&decode[2], 0, "J%" PRIu32, op->op2.opline_num); } break; @@ -118,7 +122,7 @@ char *phpdbg_decode_opline(zend_op_array *ops, zend_op *op) /*{{{ */ case ZEND_SEND_REF: case ZEND_SEND_VAR_EX: case ZEND_SEND_USER: - asprintf(&decode[2], "%" PRIu32, op->op2.num); + spprintf(&decode[2], 0, "%" PRIu32, op->op2.num); break; default: @@ -129,14 +133,14 @@ char *phpdbg_decode_opline(zend_op_array *ops, zend_op *op) /*{{{ */ /* RESULT */ switch (op->opcode) { case ZEND_CATCH: - asprintf(&decode[2], "%" PRIu32, op->result.num); + spprintf(&decode[2], 0, "%" PRIu32, op->result.num); break; default: decode[3] = phpdbg_decode_op(ops, &op->result, op->result_type); break; } - asprintf(&result, + spprintf(&result, 0, "%-23s %-20s %-20s %-20s", decode[0] ? decode[0] : opcode_name, decode[1] ? decode[1] : "", @@ -144,13 +148,13 @@ char *phpdbg_decode_opline(zend_op_array *ops, zend_op *op) /*{{{ */ decode[3] ? decode[3] : ""); if (decode[0]) - free(decode[0]); + efree(decode[0]); if (decode[1]) - free(decode[1]); + efree(decode[1]); if (decode[2]) - free(decode[2]); + efree(decode[2]); if (decode[3]) - free(decode[3]); + efree(decode[3]); return result; } /* }}} */ @@ -183,9 +187,7 @@ void phpdbg_print_opline_ex(zend_execute_data *execute_data, zend_bool ignore_fl execute_data->func->op_array.filename ? ZSTR_VAL(execute_data->func->op_array.filename) : "unknown"); } - if (decode) { - free(decode); - } + efree(decode); } if (PHPDBG_G(oplog_list)) { |