@@ -34,12 +34,14 @@ static inline char *phpdbg_decode_op(zend_op_array *ops, znode_op *op, uint32_t
3434 switch (type ) {
3535 case IS_CV : {
3636 zend_string * var = ops -> vars [EX_VAR_TO_NUM (op -> var )];
37- asprintf (& decode , "$%.*s%c" , ZSTR_LEN (var ) <= 19 ? (int ) ZSTR_LEN (var ) : 18 , ZSTR_VAL (var ), ZSTR_LEN (var ) <= 19 ? 0 : '+' );
37+ spprintf (& decode , 0 , "$%.*s%c" ,
38+ ZSTR_LEN (var ) <= 19 ? (int ) ZSTR_LEN (var ) : 18 ,
39+ ZSTR_VAL (var ), ZSTR_LEN (var ) <= 19 ? 0 : '+' );
3840 } break ;
3941
4042 case IS_VAR :
4143 case IS_TMP_VAR : {
42- asprintf (& decode , "@%" PRIu32 , EX_VAR_TO_NUM (op -> var ) - ops -> last_var );
44+ spprintf (& decode , 0 , "@%td" , EX_VAR_TO_NUM (op -> var ) - ops -> last_var );
4345 } break ;
4446 case IS_CONST : {
4547 zval * literal = RT_CONSTANT (ops , * op );
@@ -58,13 +60,13 @@ char *phpdbg_decode_opline(zend_op_array *ops, zend_op *op) /*{{{ */
5860 switch (op -> opcode ) {
5961 case ZEND_FAST_CALL :
6062 if (op -> extended_value != 0 ) {
61- asprintf (& decode [0 ], "FAST_CALL<%s>" ,
63+ spprintf (& decode [0 ], 0 , "FAST_CALL<%s>" ,
6264 op -> extended_value == ZEND_FAST_CALL_FROM_CATCH ? "FROM_CATCH" : "FROM_FINALLY" );
6365 }
6466 break ;
6567 case ZEND_FAST_RET :
6668 if (op -> extended_value != 0 ) {
67- asprintf (& decode [0 ], "FAST_RET<%s>" ,
69+ spprintf (& decode [0 ], 0 , "FAST_RET<%s>" ,
6870 op -> extended_value == ZEND_FAST_RET_TO_CATCH ? "TO_CATCH" : "TO_FINALLY" );
6971 }
7072 break ;
@@ -74,14 +76,14 @@ char *phpdbg_decode_opline(zend_op_array *ops, zend_op *op) /*{{{ */
7476 switch (op -> opcode ) {
7577 case ZEND_JMP :
7678 case ZEND_FAST_CALL :
77- asprintf (& decode [1 ], "J%ld " , OP_JMP_ADDR (op , op -> op1 ) - ops -> opcodes );
79+ spprintf (& decode [1 ], 0 , "J%td " , OP_JMP_ADDR (op , op -> op1 ) - ops -> opcodes );
7880 break ;
7981
8082 case ZEND_INIT_FCALL :
8183 case ZEND_RECV :
8284 case ZEND_RECV_INIT :
8385 case ZEND_RECV_VARIADIC :
84- asprintf (& decode [1 ], "%" PRIu32 , op -> op1 .num );
86+ spprintf (& decode [1 ], 0 , "%" PRIu32 , op -> op1 .num );
8587 break ;
8688
8789 default :
@@ -92,7 +94,9 @@ char *phpdbg_decode_opline(zend_op_array *ops, zend_op *op) /*{{{ */
9294 /* OP2 */
9395 switch (op -> opcode ) {
9496 case ZEND_JMPZNZ :
95- 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 );
97+ spprintf (& decode [2 ], 0 , "J%td or J%td" ,
98+ OP_JMP_ADDR (op , op -> op2 ) - ops -> opcodes ,
99+ ZEND_OFFSET_TO_OPLINE (op , op -> extended_value ) - ops -> opcodes );
96100 break ;
97101
98102 case ZEND_JMPZ :
@@ -101,13 +105,13 @@ char *phpdbg_decode_opline(zend_op_array *ops, zend_op *op) /*{{{ */
101105 case ZEND_JMPNZ_EX :
102106 case ZEND_JMP_SET :
103107 case ZEND_ASSERT_CHECK :
104- asprintf (& decode [2 ], "J%ld " , OP_JMP_ADDR (op , op -> op2 ) - ops -> opcodes );
108+ spprintf (& decode [2 ], 0 , "J%td " , OP_JMP_ADDR (op , op -> op2 ) - ops -> opcodes );
105109 break ;
106110
107111 case ZEND_FAST_CALL :
108112 case ZEND_FAST_RET :
109113 if (op -> extended_value != 0 ) {
110- asprintf (& decode [2 ], "J%" PRIu32 , op -> op2 .opline_num );
114+ spprintf (& decode [2 ], 0 , "J%" PRIu32 , op -> op2 .opline_num );
111115 }
112116 break ;
113117
@@ -118,7 +122,7 @@ char *phpdbg_decode_opline(zend_op_array *ops, zend_op *op) /*{{{ */
118122 case ZEND_SEND_REF :
119123 case ZEND_SEND_VAR_EX :
120124 case ZEND_SEND_USER :
121- asprintf (& decode [2 ], "%" PRIu32 , op -> op2 .num );
125+ spprintf (& decode [2 ], 0 , "%" PRIu32 , op -> op2 .num );
122126 break ;
123127
124128 default :
@@ -129,28 +133,28 @@ char *phpdbg_decode_opline(zend_op_array *ops, zend_op *op) /*{{{ */
129133 /* RESULT */
130134 switch (op -> opcode ) {
131135 case ZEND_CATCH :
132- asprintf (& decode [2 ], "%" PRIu32 , op -> result .num );
136+ spprintf (& decode [2 ], 0 , "%" PRIu32 , op -> result .num );
133137 break ;
134138 default :
135139 decode [3 ] = phpdbg_decode_op (ops , & op -> result , op -> result_type );
136140 break ;
137141 }
138142
139- asprintf (& result ,
143+ spprintf (& result , 0 ,
140144 "%-23s %-20s %-20s %-20s" ,
141145 decode [0 ] ? decode [0 ] : opcode_name ,
142146 decode [1 ] ? decode [1 ] : "" ,
143147 decode [2 ] ? decode [2 ] : "" ,
144148 decode [3 ] ? decode [3 ] : "" );
145149
146150 if (decode [0 ])
147- free (decode [0 ]);
151+ efree (decode [0 ]);
148152 if (decode [1 ])
149- free (decode [1 ]);
153+ efree (decode [1 ]);
150154 if (decode [2 ])
151- free (decode [2 ]);
155+ efree (decode [2 ]);
152156 if (decode [3 ])
153- free (decode [3 ]);
157+ efree (decode [3 ]);
154158
155159 return result ;
156160} /* }}} */
@@ -183,9 +187,7 @@ void phpdbg_print_opline_ex(zend_execute_data *execute_data, zend_bool ignore_fl
183187 execute_data -> func -> op_array .filename ? ZSTR_VAL (execute_data -> func -> op_array .filename ) : "unknown" );
184188 }
185189
186- if (decode ) {
187- free (decode );
188- }
190+ efree (decode );
189191 }
190192
191193 if (PHPDBG_G (oplog_list )) {
0 commit comments