Hello! I'm trying to write a trim function which expects a zval* of type
string, as follows:
int zstrtrim(zval *z)
{
char *ptr1 = Z_STRVAL_P(z), *ptr2;
if (Z_STRLEN_P(z) == 0) return;
ptr2 = &ptr1[Z_STRLEN_P(z)-1];
while (*ptr1 != 0)
{
if (*ptr1 > ' ') break;
ptr1++;
}
while (ptr2 > ptr1)
{
if (*ptr2 > ' ') break;
ptr2--;
}
ZVAL_STRINGL(z, ptr1, ptr2 - ptr1 + 1, 1);
}
However, the last line gives me a segmentation fault. Why? How can I
change the value of the input zval string?
Thank you for your patience!
Oriol
Oriol,
try valgrind (aka memory checker) and you will hopefully find where your
problem resides
Andrey
----- Original Message -----
From: "Oriol" omagrane@anthill.es
To: internals@lists.php.net
Sent: Monday, June 30, 2003 7:13 PM
Subject: [PHP-DEV] Simple question
Hello! I'm trying to write a trim function which expects a zval* of
type
string, as follows:
int zstrtrim(zval *z)
{
char *ptr1 = Z_STRVAL_P(z), *ptr2;
if (Z_STRLEN_P(z) == 0) return;
ptr2 = &ptr1[Z_STRLEN_P(z)-1];
while (*ptr1 != 0)
{
if (*ptr1 > ' ') break;
ptr1++;
}
while (ptr2 > ptr1)
{
if (*ptr2 > ' ') break;
ptr2--;
}
ZVAL_STRINGL(z, ptr1, ptr2 - ptr1 + 1, 1);
}However, the last line gives me a segmentation fault. Why? How can Ichange the value of the input zval string?
Thank you for your patience!Oriol