Hi all,
My name is Ilia--I figured that since this is my first patch to the PHP
core, I should refrain from submitting a massive patch and keep it simple.
The patch that I have attached fixes a simple compiler warning within
Zend/zend_execute.c.
The compiler was complaining about comparing signed and unsigned integers.
What I did was wrap the whole block in an if statement that first ensures
that the signed integer in the comparison is greater than or equal to 0 and
then casts it to unsigned and actually does the comparison. Since the
actual comparison logic is checking to see that an unsigned integer is
larger than the one I am casting, this is all safe.
Also, the entire test suite runs fine and the output is unchanged. All in
all, I am confident with it.
After having used PHP for so many years, I'm really excited about finally
having found the time to apply my C knowledge and actually start
contributing back to the project :)
Thanks!
Ilia
Index: zend_execute.c
===================================================================
RCS file: /repository/ZendEngine2/zend_execute.c,v
retrieving revision 1.716.2.12.2.24.2.36
diff -u -b -r1.716.2.12.2.24.2.36 zend_execute.c
--- zend_execute.c 15 Aug 2008 19:47:23 -0000 1.716.2.12.2.24.2.36
+++ zend_execute.c 23 Sep 2008 04:23:24 -0000
@@ -626,7 +626,9 @@
return 0;
}
- if (T->str_offset.offset >= Z_STRLEN_P(T->str_offset.str)) {
+ if (Z_STRLEN_P(T->str_offset.str) >= 0)
+ {
+ if (T->str_offset.offset >= (unsigned int)
Z_STRLEN_P(T->str_offset.str)) {
Z_STRVAL_P(T->str_offset.str) = (char *)
erealloc(Z_STRVAL_P(T->str_offset.str), T->str_offset.offset+1+1);
memset(Z_STRVAL_P(T->str_offset.str) +
Z_STRLEN_P(T->str_offset.str),
' ',
@@ -634,6 +636,7 @@
Z_STRVAL_P(T->str_offset.str)[T->str_offset.offset+1] =
0;
Z_STRLEN_P(T->str_offset.str) = T->str_offset.offset+1;
}
+ }
if (Z_TYPE_P(value) != IS_STRING) {
zval tmp = *value;
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php