php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #29757 Sybase compile error
Submitted: 2004-08-19 15:02 UTC Modified: 2005-03-07 20:27 UTC
Votes:21
Avg. Score:4.7 ± 0.6
Reproduced:21 of 21 (100.0%)
Same Version:5 (23.8%)
Same OS:4 (19.0%)
From: pm at wallit dot net Assigned:
Status: Closed Package: Sybase (dblib) related
PHP Version: 5.0.1 OS: Sun Solaris 8
Private report: No CVE-ID: None
Welcome back! If you're the original bug submitter, here's where you can edit the bug or add additional notes.
If you forgot your password, you can retrieve your password here.
Password:
Status:
Package:
Bug Type:
Summary:
From: pm at wallit dot net
New email:
PHP Version: OS:

 

 [2004-08-19 15:02 UTC] 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



Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2005-02-04 16:36 UTC] jpollock at ncbi dot nlm dot nih dot gov
jpollock@graceland:/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
jpollock@graceland:/opt/local/src/php-5.0.3$

A traceback of the nested macros:

jpollock@graceland:/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)
jpollock@graceland:/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)
jpollock@graceland:/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)
jpollock@graceland:/opt/local/src/php-5.0.3$
 [2005-02-22 17:34 UTC] 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-22 23:31 UTC] drbob at TheManFromSPUD dot com
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.
 [2005-03-07 20:27 UTC] sniper@php.net
This bug has been fixed in CVS.

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/.
 
Thank you for the report, and for helping us make PHP better.


 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Sat Dec 21 17:01:58 2024 UTC