Skip to content

Commit 83e0a5d

Browse files
committed
Assert no unrelated literals where unsupported
In the interest of being defensive. Also drop an unnecessary check for a value that cannot be null.
1 parent a5a89cc commit 83e0a5d

File tree

1 file changed

+8
-4
lines changed

1 file changed

+8
-4
lines changed

Zend/Optimizer/compact_literals.c

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -297,6 +297,7 @@ void zend_optimizer_compact_literals(zend_op_array *op_array, zend_optimizer_ctx
297297
}
298298
switch (Z_TYPE(op_array->literals[i])) {
299299
case IS_NULL:
300+
ZEND_ASSERT(info[i].num_related == 1);
300301
if (l_null < 0) {
301302
l_null = j;
302303
if (i != j) {
@@ -308,6 +309,7 @@ void zend_optimizer_compact_literals(zend_op_array *op_array, zend_optimizer_ctx
308309
map[i] = l_null;
309310
break;
310311
case IS_FALSE:
312+
ZEND_ASSERT(info[i].num_related == 1);
311313
if (l_false < 0) {
312314
l_false = j;
313315
if (i != j) {
@@ -319,6 +321,7 @@ void zend_optimizer_compact_literals(zend_op_array *op_array, zend_optimizer_ctx
319321
map[i] = l_false;
320322
break;
321323
case IS_TRUE:
324+
ZEND_ASSERT(info[i].num_related == 1);
322325
if (l_true < 0) {
323326
l_true = j;
324327
if (i != j) {
@@ -369,6 +372,7 @@ void zend_optimizer_compact_literals(zend_op_array *op_array, zend_optimizer_ctx
369372
}
370373
break;
371374
case IS_DOUBLE:
375+
ZEND_ASSERT(info[i].num_related == 1);
372376
if ((pos = zend_hash_str_find(&double_hash, (char*)&Z_DVAL(op_array->literals[i]), sizeof(double))) != NULL) {
373377
map[i] = Z_LVAL_P(pos);
374378
} else {
@@ -399,10 +403,8 @@ void zend_optimizer_compact_literals(zend_op_array *op_array, zend_optimizer_ctx
399403
} else {
400404
map[i] = j;
401405
ZVAL_LONG(&zv, j);
402-
if (key) {
403-
zend_hash_add_new(&hash, key, &zv);
404-
zend_string_release_ex(key, 0);
405-
}
406+
zend_hash_add_new(&hash, key, &zv);
407+
zend_string_release_ex(key, 0);
406408
if (i != j) {
407409
op_array->literals[j] = op_array->literals[i];
408410
info[j] = info[i];
@@ -419,6 +421,7 @@ void zend_optimizer_compact_literals(zend_op_array *op_array, zend_optimizer_ctx
419421
break;
420422
}
421423
case IS_ARRAY:
424+
ZEND_ASSERT(info[i].num_related == 1);
422425
if (zend_hash_num_elements(Z_ARRVAL(op_array->literals[i])) == 0) {
423426
if (l_empty_arr < 0) {
424427
l_empty_arr = j;
@@ -436,6 +439,7 @@ void zend_optimizer_compact_literals(zend_op_array *op_array, zend_optimizer_ctx
436439
ZEND_FALLTHROUGH;
437440
default:
438441
/* don't merge other types */
442+
ZEND_ASSERT(info[i].num_related == 1);
439443
map[i] = j;
440444
if (i != j) {
441445
op_array->literals[j] = op_array->literals[i];

0 commit comments

Comments
 (0)