#39522 [NEW]: PHP's header files are unusable for C++ extensions

From: Date: Wed, 15 Nov 2006 07:35:48 +0000
Subject: #39522 [NEW]: PHP's header files are unusable for C++ extensions
Groups: php.bugs 
Request: Send a blank email to php-bugs+get-105045@lists.php.net to get a copy of this message
From: phoemix at harmless dot hu Operating system: freebsd6, linux (but irrelevant) PHP version: 5.2.0 PHP Bug Type: Compile Failure Bug description: PHP's header files are unusable for C++ extensions Description: ------------ (the php version is irrelevant, i just couldn't pick that for the "compile failure" type. i had it on 4.x and on 5.x both" create a new extensions, have a C++ source file, and include some php headers. it will fail on two points. 1) C++ doesn't support "long long". lot's of architectures has stdint.h (i think it's C99). that should be used instead of "long long"-ing manually. 2) C++ prohobits havint a trailing coma at the end of an enum's last member. i have created a patch for the FreeBSD ports system. the errors are in snprintf.h and in php_stream_filter_api.h/. --- patch follows --- diff -ur php-5.2.0-orig/main/snprintf.h php-5.2.0/main/snprintf.h --- php-5.2.0-orig/main/snprintf.h Sun Jan 1 13:50:17 2006 +++ php-5.2.0/main/snprintf.h Tue Nov 14 14:23:31 2006 @@ -120,8 +120,14 @@ #else # define WIDE_INT long #endif +#ifdef __FreeBSD__ +#include <stdint.h> +typedef int64_t wide_int; +typedef uint64_t u_wide_int; +#else typedef WIDE_INT wide_int; typedef unsigned WIDE_INT u_wide_int; +#endif typedef int bool_int; diff -ur php-5.2.0-orig/main/streams/php_stream_filter_api.h php-5.2.0/main/streams/php_stream_filter_api.h --- php-5.2.0-orig/main/streams/php_stream_filter_api.h Sun Jan 1 13:50:18 2006 +++ php-5.2.0/main/streams/php_stream_filter_api.h Tue Nov 14 14:24:33 2006 @@ -62,7 +62,7 @@ typedef enum { PSFS_ERR_FATAL, /* error in data stream */ PSFS_FEED_ME, /* filter needs more data; stop processing chain until more is available */ - PSFS_PASS_ON, /* filter generated output buckets; pass them on to next in chain */ + PSFS_PASS_ON /* filter generated output buckets; pass them on to next in chain */ } php_stream_filter_status_t; /* Buckets API. */ Reproduce code: --------------- create a new extensions, have a C++ source file, and include some php headers. it will fail on two points. Expected result: ---------------- a clean compilation. Actual result: -------------- i don't have the error output yet, since my local version is fixed manually. -- Edit bug report at http://bugs.php.net/?id=39522&edit=1 -- Try a CVS snapshot (PHP 4.4): http://bugs.php.net/fix.php?id=39522&r=trysnapshot44 Try a CVS snapshot (PHP 5.2): http://bugs.php.net/fix.php?id=39522&r=trysnapshot52 Try a CVS snapshot (PHP 6.0): http://bugs.php.net/fix.php?id=39522&r=trysnapshot60 Fixed in CVS: http://bugs.php.net/fix.php?id=39522&r=fixedcvs Fixed in release: http://bugs.php.net/fix.php?id=39522&r=alreadyfixed Need backtrace: http://bugs.php.net/fix.php?id=39522&r=needtrace Need Reproduce Script: http://bugs.php.net/fix.php?id=39522&r=needscript Try newer version: http://bugs.php.net/fix.php?id=39522&r=oldversion Not developer issue: http://bugs.php.net/fix.php?id=39522&r=support Expected behavior: http://bugs.php.net/fix.php?id=39522&r=notwrong Not enough info: http://bugs.php.net/fix.php?id=39522&r=notenoughinfo Submitted twice: http://bugs.php.net/fix.php?id=39522&r=submittedtwice register_globals: http://bugs.php.net/fix.php?id=39522&r=globals PHP 3 support discontinued: http://bugs.php.net/fix.php?id=39522&r=php3 Daylight Savings: http://bugs.php.net/fix.php?id=39522&r=dst IIS Stability: http://bugs.php.net/fix.php?id=39522&r=isapi Install GNU Sed: http://bugs.php.net/fix.php?id=39522&r=gnused Floating point limitations: http://bugs.php.net/fix.php?id=39522&r=float No Zend Extensions: http://bugs.php.net/fix.php?id=39522&r=nozend MySQL Configuration Error: http://bugs.php.net/fix.php?id=39522&r=mysqlcfg

« previous php.bugs (#105045) next »