Win32 x86 5.4-dev build failure

[email protected] (Richard Quadling)
Newsgroups php.internals.win
Message-ID <CAKUjMCVk3qV0dsXWUmGNUqdqzN_7mx5EC74uddwj6SS6qqeofQ@mail.gmail.com>
It seems that I'm missing ssize_t as an identifier for MSVC++2008
Express Edition (with a service pack or 9).

d:\buildphp\php_5_4\php_5_4\sapi\cli\php_http_parser.h(115) : error
C2061: syntax error : identifier 'ssize_t'
d:\buildphp\php_5_4\php_5_4\sapi\cli\php_http_parser.h(132) : error
C2059: syntax error : '}'
sapi\cli\php_http_parser.c(328) : error C2037: left of 'state'
specifies undefined struct/union 'php_http_parser'
sapi\cli\php_http_parser.c(329) : error C2037: left of 'header_state'
specifies undefined struct/union 'php_http_parser'
[snip]
sapi\cli\php_http_parser.c(1384) : fatal error C1003: error count
exceeds 100; stopping compilation

and is first confirmed in
http://windows.php.net/downloads/snaps/php-5.4/r315159/logs/make-nts-windows-vc9-x86-r315159.txt

I see ssize_t is defined in
http://svn.php.net/viewvc/php/php-src/branches/PHP_5_4/win32/build/config.w32.h.in?view=annotate&sortdir=down#l137
which creates main/config.w32.h.

http://msdn.microsoft.com/en-us/library/aa383751(v=vs.85).aspx tells me ...

typedef LONG_PTR SSIZE_T;

And is defined in BaseTsd.h

So, changing ...

#include <sys/types.h>
#if defined(_WIN32) && !defined(__MINGW32__)
# include "win32/php_stdint.h"
#else
# include <stdint.h>
#endif

to ...

#include <sys/types.h>
#if defined(_WIN32) && !defined(__MINGW32__)
# include "win32/php_stdint.h"
# include <BaseTsd.h>
#else
# include <stdint.h>
#endif

and

  uint32_t nread;
  ssize_t  content_length;

to

  uint32_t nread;
  SSIZE_T  content_length;

in sapi\cli\php_http_parser.h and the build succeeds.

But I'm probably missing an obvious way for this as ssize_t is used
elsewhere without issue.

Richard.
-- 
Richard Quadling
Twitter : EE : Zend : PHPDoc
@RQuadling : e-e.com/M_248814.html : bit.ly/9O8vFY : bit.ly/lFnVea
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.