Req #76827 [PATCH]: Introduce a new function struncate or some such

From: Date: Wed, 21 Oct 2020 16:44:52 +0000
Subject: Req #76827 [PATCH]: Introduce a new function struncate or some such
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-229843@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=76827&edit=1

 ID:                 76827
 Patch added by:     cmb@php.net
 Reported by:        zjz at zjz dot name
 Summary:            Introduce a new function struncate or some such
 Status:             Assigned
 Type:               Feature/Change Request
 Package:            Performance problem
 PHP Version:        Irrelevant
 Block user comment: N
 Private report:     N

 New Comment:

The following pull request has been associated:

Patch Name: Fix #76827: Introduce a new function str_truncate to make fast truncation
On GitHub:  https://github.com/php/php-src/pull/3483
Patch:      https://github.com/php/php-src/pull/3483.patch


Previous Comments:
------------------------------------------------------------------------
[2018-08-31 18:03:49] zjz at zjz dot name

Let me try to offer a patch on Github.

------------------------------------------------------------------------
[2018-08-31 11:09:19] zjz at zjz dot name

Strictly speaking, it doesn't have to be a reference to be passed to struncate at all, since
str->len = len; or some similar code can do the job anyway, regardless of whether the parameter
is a reference or not.

But I'd like to suggest the parameter in the new function to be a reference, otherwise it
can't reflect the fact that the parameter value will be changed(in other words, it's
length would be changed), and would make the user confused.

------------------------------------------------------------------------
[2018-08-31 10:47:45] zjz at zjz dot name

I think it's far more effient than substr when the new string is still very long, after being
truncated, isn't it?

------------------------------------------------------------------------
[2018-08-31 10:39:09] zjz at zjz dot name

The general idea I suggested is directly modifying the **len** value of the str:

TBC, I am not familar with PHP source code, so this code I write here can't be the exactly
formal code, but simply demostrates the general idea I meant:

PHP_FUNCTION(struncate)
{
	zend_string* str;
	zend_long    len;
	int argc = ZEND_NUM_ARGS();

	ZEND_PARSE_PARAMETERS_START(...)
		Z_PARAM_STR(str)
		Z_PARAM_LONG(len)
	ZEND_PARSE_PARAMETERS_END();

	str->len = len;
}

------------------------------------------------------------------------
[2018-08-31 10:34:01] zjz at zjz dot name

Well. Let me try to look into the C code and then gives some code example to explain what I said.

------------------------------------------------------------------------


The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at

    https://bugs.php.net/bug.php?id=76827


--
Edit this bug report at https://bugs.php.net/bug.php?id=76827&edit=1


Thread (15 messages)

« previous php.bugs (#229843) next »