ID:               26056
 User updated by:  AxelLuttgens at swing dot be
 Reported By:      AxelLuttgens at swing dot be
-Status:           Closed
+Status:           Open
 Bug Type:         Compile Warning
 Operating System: Darwin 7.0.0 (Panther)
 PHP Version:      4.3.3
 New Comment:

Sorry to say so, but nothing seems to have been fixed in the snapshots:
I get exactly same warnings with php4-STABLE-200310311630 and
php4-STABLE-200311010830.

One could consider that this is more a cosmetic matter than something
to worry about; after all, it seems to work...

Yet, this could prove problematic in a long term maintenance
perspective, as there are clearly inconsistencies within a same
library: once an int, once a size_t value for similar purposes.
An int being a signed value, and a size_t being an unsigned one (seems
to be an unsigned long here), some weird truncations or expansions
could finally be overlooked on some platforms.

But I'm perhaps missing something, in which case I apologize for being
so meticulous!
And anyway, thanks for the follow-up.


Previous Comments:
------------------------------------------------------------------------

[2003-10-31 09:37:41] [EMAIL PROTECTED]

This bug has been fixed in CVS.

In case this was a PHP problem, snapshots of the sources are packaged
every three hours; this change will be in the next snapshot. You can
grab the snapshot at http://snaps.php.net/.
 
In case this was a documentation problem, the fix will show up soon at
http://www.php.net/manual/.

In case this was a PHP.net website problem, the change will show
up on the PHP.net site and on the mirror sites in short time.
 
Thank you for the report, and for helping us make PHP better.

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

[2003-10-31 09:27:39] AxelLuttgens at swing dot be

Description:
------------
When compiling PHP, I get two warnings related to lines 1555 and 1582
of exif.c; both warnings read:

warning: passing arg 3 of `php_addslashes' from incompatible pointer
type

Function php_addslashes gets called 4 times in file ext/exif/exif.c (/*
$Id: exif.c,v 1.118.2.23 2003/06/25 13:21:54 edink Exp $ */).

In function exif_iif_add_value, where argument 'length' is of type
size_t:
   line 1555: info_value->s = php_addslashes(value, length, &length, 0
TSRMLS_CC);
   line 1582: info_value->s = php_addslashes(value, length, &length, 0
TSRMLS_CC);

In function exif_iif_add_str:
    line 1708: info_data->value.s = php_addslashes(value,
strlen(value), NULL, 0 TSRMLS_CC);

In function exif_iif_add_buffer, where argument 'length' is of type
int:
    line 1756: info_data->value.s = php_addslashes(value, length,
&length, 0 TSRMLS_CC);

In ext/standard/string.c, definition of php_addsclashes reads as:

PHPAPI char *php_addslashes(char *str, int length, int *new_length, int
should_free TSRMLS_DC)
{
   ...
}

which is consistent with what appears in ext/standard/php_string.h:

PHPAPI char *php_addslashes(char *str, int length, int *new_length, int
freeit TSRMLS_DC);

Clearly, line 1708 is a don't care, and line 1756 is just compliant
with the definition of php_addslashes.
But lines 1555 and 1582 both use a length of type size_t instead of
type int.

I am wondering what the compiler really compiles (as it just warns and
goes on).
Could this be a source of confusion (such as an unsigned long being
interpreted as a signed one)?

And would it be safe to just change the definition of function
exif_iif_add_value so as to set type of argument 'lentgh' to int
instead of size_t?



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


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

Reply via email to