ID: 29757
Comment by: drbob at TheManFromSPUD dot com
Reported By: pm at wallit dot net
Status: Open
Bug Type: Compile Failure
Operating System: Sun Solaris 8
PHP Version: 5.0.1
New Comment:
SOLUTION!
In ext/sybase/php_sybase_db.c around line 1112 change the lines:
PHP_FUNCTION(sybase_fetch_object)
{
php_sybase_fetch_hash(INTERNAL_FUNCTION_PARAM_PASSTHRU);
if (Z_TYPE_P(return_value)==IS_ARRAY) {
Z_TYPE_P(return_value)=IS_OBJECT;
Z_OBJPROP_P(return_value) = Z_ARRVAL_P(return_value);
Z_OBJCE_P(return_value) = ZEND_STANDARD_CLASS_DEF_PTR;
}
}
to:
PHP_FUNCTION(sybase_fetch_object)
{
php_sybase_fetch_hash(INTERNAL_FUNCTION_PARAM_PASSTHRU);
if (Z_TYPE_P(return_value)==IS_ARRAY) {
object_and_properties_init(
return_value,
ZEND_STANDARD_CLASS_DEF_PTR,
Z_ARRVAL_P(return_value)
);
}
}
I've tested this on Fedora Core 3 and Solaris 8. Both with gcc 3.4.2.
Works great.
Previous Comments:
[2005-02-22 17:34:44] drbob at TheManFromSPUD dot com
This alswo occurs with PHP 5.0.3 on Fedora Core 3 with Sybase 11.1.1
and 12.5.
[2005-02-04 16:36:18] jpollock at ncbi dot nlm dot nih dot gov
[EMAIL PROTECTED]:/opt/local/src/php-5.0.3$ make
gcc -Iext/sybase/ -I/opt/local/src/php-5.0.3/ext/sybase/
-DPHP_ATOM_INC -I/opt/local/src/php-5.0.3/include
-I/opt/local/src/php-5.0.3/main -I/opt/local/src/php-5.0.3
-I/opt/local/src/php-5.0.3/Zend -I/usr/local/gnome2/include/libxml2
-I/netopt/Sybase/clients/current/include
-I/opt/local/src/php-5.0.3/TSRM -g -O2 -c
/opt/local/src/php-5.0.3/ext/sybase/php_sybase_db.c -o
ext/sybase/php_sybase_db.o && echo > ext/sybase/php_sybase_db.lo
/opt/local/src/php-5.0.3/ext/sybase/php_sybase_db.c: In function
`zif_sybase_fetch_object':
/opt/local/src/php-5.0.3/ext/sybase/php_sybase_db.c:1112: error:
invalid lvalue in assignment
/opt/local/src/php-5.0.3/ext/sybase/php_sybase_db.c:1113: error:
invalid lvalue in assignment
make: *** [ext/sybase/php_sybase_db.lo] Error 1
[EMAIL PROTECTED]:/opt/local/src/php-5.0.3$
A traceback of the nested macros:
[EMAIL PROTECTED]:/opt/local/src/php-5.0.3$ grep -ri Z_OBJPROP_P . |
grep define
./ext/soap/soap.c:#define FIND_SDL_PROPERTY(ss,tmp)
zend_hash_find(Z_OBJPROP_P(ss), "sdl", sizeof("sdl"), (void **)&tmp)
./Zend/zend_operators.h:#define Z_OBJPROP_P(zval_p)
Z_OBJPROP(*zval_p)
./Zend/zend_operators.h:#define Z_OBJPROP_PP(zval_pp)
Z_OBJPROP(**zval_pp)
[EMAIL PROTECTED]:/opt/local/src/php-5.0.3$ grep -ri Z_OBJPROP\( . |
grep define
./Zend/zend_operators.h:#define Z_OBJPROP(zval)
Z_OBJ_HT((zval))->get_properties(&(zval) TSRMLS_CC)
./Zend/zend_operators.h:#define Z_OBJPROP_P(zval_p)
Z_OBJPROP(*zval_p)
./Zend/zend_operators.h:#define Z_OBJPROP_PP(zval_pp)
Z_OBJPROP(**zval_pp)
[EMAIL PROTECTED]:/opt/local/src/php-5.0.3$ grep -ri Z_OBJ_HT\( . |
grep define
./Zend/zend_operators.h:#define Z_OBJ_HT(zval)
(zval).value.obj.handlers
./Zend/zend_operators.h:#define Z_OBJPROP(zval)
Z_OBJ_HT((zval))->get_properties(&(zval) TSRMLS_CC)
./Zend/zend_operators.h:#define Z_OBJ_HANDLER(zval, hf)
Z_OBJ_HT((zval))->hf
./Zend/zend_operators.h:#define Z_OBJ_HT_P(zval_p)
Z_OBJ_HT(*zval_p)
./Zend/zend_operators.h:#define Z_OBJ_HT_PP(zval_p)
Z_OBJ_HT(**zval_p)
./Zend/zend_object_handlers.h:#define IS_ZEND_STD_OBJECT(z) ((z).type
== IS_OBJECT && (Z_OBJ_HT((z))->get_class_entry != NULL))
./Zend/zend_object_handlers.h:#define HAS_CLASS_ENTRY(z)
(Z_OBJ_HT(z)->get_class_entry != NULL)
[EMAIL PROTECTED]:/opt/local/src/php-5.0.3$
[2004-08-19 15:02:04] pm at wallit dot net
Description:
./configure --enable-simplexml --with-sybase=/usr/local/freetds/
--with-mysql --with-apxs=/usr/local/wac/bin/apxs
followed by a "make" results in compile error for Sybase and FreeTDS
support:
/bin/sh /home/php-5.0.1/libtool --silent --preserve-dup-deps
--mode=compile gcc -Iext/sybase/ -I/home/php-5.0.1/ext/sybase/
-DPHP_ATOM_INC -I/home/php-5.0.1/include -I/home/php-5.0.1/main
-I/home/php-5.0.1 -I/home/php-5.0.1/Zend -I/usr/local/include/libxml2
-I/usr/local/include/mysql -I/usr/local/freetds//include
-D_POSIX_PTHREAD_SEMANTICS -I/home/php-5.0.1/TSRM -g -O2 -prefer-pic
-c /home/php-5.0.1/ext/sybase/php_sybase_db.c -o
ext/sybase/php_sybase_db.lo
/home/php-5.0.1/ext/sybase/php_sybase_db.c: In function
`zif_sybase_fetch_object':
/home/php-5.0.1/ext/sybase/php_sybase_db.c:1112: invalid lvalue in
assignment
/home/php-5.0.1/ext/sybase/php_sybase_db.c:1113: invalid lvalue in
assignment
make: *** [ext/sybase/php_sybase_db.lo] Error 1
--
Edit this bug report at http://bugs.php.net/?id=29757&edit=1