@@ -343,7 +343,7 @@ static zend_live_range* pmmpthread_copy_live(zend_live_range *old, int end) {
343
343
} /* }}} */
344
344
345
345
/* {{{ */
346
- static zval * pmmpthread_copy_literals (const pmmpthread_ident_t * owner , zval * old , int last , void * memory ) {
346
+ static zval * pmmpthread_copy_literals (const pmmpthread_ident_t * owner , zval * old , int last , void * memory , zend_string * func_name , zend_string * filename , uint32_t lineno ) {
347
347
zval * literals = (zval * ) memory ;
348
348
zval * literal = literals ,
349
349
* end = literals + last ;
@@ -352,8 +352,14 @@ static zval* pmmpthread_copy_literals(const pmmpthread_ident_t* owner, zval *old
352
352
memcpy (memory , old , sizeof (zval ) * last );
353
353
while (literal < end ) {
354
354
if (pmmpthread_copy_zval (owner , literal , old_literal ) == FAILURE ) {
355
- ZEND_ASSERT (0 ); //literals should always be copyable
356
- ZVAL_NULL (literal );
355
+ zend_error_at_noreturn (
356
+ E_CORE_ERROR ,
357
+ filename ,
358
+ lineno ,
359
+ "pmmpthread encountered a non-copyable literal of type %s in function %s" ,
360
+ zend_zval_type_name (old_literal ),
361
+ ZSTR_VAL (func_name )
362
+ );
357
363
}
358
364
old_literal ++ ;
359
365
literal ++ ;
@@ -603,7 +609,7 @@ static inline zend_function* pmmpthread_copy_user_function(const pmmpthread_iden
603
609
}
604
610
#endif
605
611
606
- if (op_array -> literals ) op_array -> literals = pmmpthread_copy_literals (owner , literals , op_array -> last_literal , literals_memory );
612
+ if (op_array -> literals ) op_array -> literals = pmmpthread_copy_literals (owner , literals , op_array -> last_literal , literals_memory , op_array -> function_name , op_array -> filename , op_array -> line_start );
607
613
608
614
op_array -> opcodes = pmmpthread_copy_opcodes (op_array , literals , opcodes_memory );
609
615
0 commit comments