--- zend_operators.orig.c Tue Apr 25 12:28:00 2000 +++ zend_operators.c Tue Apr 25 13:14:00 2000 @@ -940,6 +940,51 @@ return SUCCESS; } +ZEND_API int times_function(zval *result, zval *op1, zval *op2) +{ + zval op1_copy, op2_copy; + int use_copy1, use_copy2; + long tmp = 0; + + zend_make_printable_zval(op1, &op1_copy, &use_copy1); + zend_make_printable_zval(op2, &op2_copy, &use_copy2); + + if (use_copy1) { + op1 = &op1_copy; + } + if (use_copy2) { + op2 = &op2_copy; + } + + convert_to_long ( op2 ); + result->type = IS_STRING; + + if ( op2 -> value.lval < 1 ) + { + result -> value.str.val = (char *) emalloc(1); + result -> value.str.len = 0; + } + else + { + result->value.str.len = op1->value.str.len * op2->value.lval; + result->value.str.val = (char *) emalloc(result->value.str.len + 1); + memcpy(result->value.str.val, op1->value.str.val, op1->value.str.len); + while ( ++tmp < op2->value.lval ) + { + memcpy(result->value.str.val+op1->value.str.len, op1->value.str.val,op1->value.str.len); + } + } + result->value.str.val[result->value.str.len] = 0; + + if (use_copy1) { + zval_dtor(op1); + } + if (use_copy2) { + zval_dtor(op2); + } + return SUCCESS; +} + ZEND_API int compare_function(zval *result, zval *op1, zval *op2) {