php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #45616 php_mbregex.c (122) : error C2099: initializer is not a constant
Submitted: 2008-07-24 15:30 UTC Modified: 2008-07-26 21:41 UTC
From: geerdeli at yahoo dot com dot cn Assigned:
Status: Not a bug Package: Compile Failure
PHP Version: 5.2.6 OS: win32 vc6.0 sp6
Private report: No CVE-ID: None
 [2008-07-24 15:30 UTC] geerdeli at yahoo dot com dot cn
Description:
------------
While compiling mbstring.dsp project under vc6.0,
The following source code in php_mbregex.c between line 122 and 234
"
php_mb_regex_enc_name_map_t enc_name_map[] ={
	{
		"EUC-JP\0EUCJP\0X-EUC-JP\0UJIS\0EUCJP\0EUCJP-WIN\0",
		 ONIG_ENCODING_EUC_JP
	},
..."

will always report the 
php_mbregex.c(122) : error C2099: initializer is not a constant
...



Reproduce code:
---------------
php_mb_regex_enc_name_map_t enc_name_map[] ={
	{
		"EUC-JP\0EUCJP\0X-EUC-JP\0UJIS\0EUCJP\0EUCJP-WIN\0",
		 ONIG_ENCODING_EUC_JP
	},
	{
		"UTF-8\0UTF8\0",
		ONIG_ENCODING_UTF8
	},
	{
		"UTF-16\0UTF-16BE\0",
		ONIG_ENCODING_UTF16_BE
	},
	{
		"UTF-16LE\0",
		ONIG_ENCODING_UTF16_LE
	},
	{
		"UCS-4\0UTF-32\0UTF-32BE\0",
		ONIG_ENCODING_UTF32_BE
	},
	{
		"UCS-4LE\0UTF-32LE\0",
		ONIG_ENCODING_UTF32_LE
	},
	{
		"SJIS\0CP932\0MS932\0SHIFT_JIS\0SJIS-WIN\0WINDOWS-31J\0",
		ONIG_ENCODING_SJIS
	},
	{
		"BIG5\0BIG-5\0BIGFIVE\0CN-BIG5\0BIG-FIVE\0",
		ONIG_ENCODING_BIG5
	},
	{
		"EUC-CN\0EUCCN\0EUC_CN\0GB-2312\0GB2312\0",
		ONIG_ENCODING_EUC_CN
	},
	{
		"EUC-TW\0EUCTW\0EUC_TW\0",
		ONIG_ENCODING_EUC_TW
	},
	{
		"EUC-KR\0EUCKR\0EUC_KR\0",
		ONIG_ENCODING_EUC_KR
	},
	{
		"KOI8\0KOI-8\0",
		ONIG_ENCODING_KOI8
	},
	{
		"KOI8R\0KOI8-R\0KOI-8R\0",
		ONIG_ENCODING_KOI8_R
	},
	{
		"ISO-8859-1\0ISO8859-1\0ISO_8859_1\0ISO8859_1\0",
		ONIG_ENCODING_ISO_8859_1
	},
	{
		"ISO-8859-2\0ISO8859-2\0ISO_8859_2\0ISO8859_2\0",
		ONIG_ENCODING_ISO_8859_2
	},
	{
		"ISO-8859-3\0ISO8859-3\0ISO_8859_3\0ISO8859_3\0",
		ONIG_ENCODING_ISO_8859_3
	},
	{
		"ISO-8859-4\0ISO8859-4\0ISO_8859_4\0ISO8859_4\0",
		ONIG_ENCODING_ISO_8859_4
	},
	{
		"ISO-8859-5\0ISO8859-5\0ISO_8859_5\0ISO8859_5\0",
		ONIG_ENCODING_ISO_8859_5
	},
	{
		"ISO-8859-6\0ISO8859-6\0ISO_8859_6\0ISO8859_6\0",
		ONIG_ENCODING_ISO_8859_6
	},
	{
		"ISO-8859-7\0ISO8859-7\0ISO_8859_7\0ISO8859_7\0",
		ONIG_ENCODING_ISO_8859_7
	},
	{
		"ISO-8859-8\0ISO8859-8\0ISO_8859_8\0ISO8859_8\0",
		ONIG_ENCODING_ISO_8859_8
	},
	{
		"ISO-8859-9\0ISO8859-9\0ISO_8859_9\0ISO8859_9\0",
		ONIG_ENCODING_ISO_8859_9
	},
	{
		"ISO-8859-10\0ISO8859-10\0ISO_8859_10\0ISO8859_10\0",
		ONIG_ENCODING_ISO_8859_10
	},
	{
		"ISO-8859-11\0ISO8859-11\0ISO_8859_11\0ISO8859_11\0",
		ONIG_ENCODING_ISO_8859_11
	},
	{
		"ISO-8859-13\0ISO8859-13\0ISO_8859_13\0ISO8859_13\0",
		ONIG_ENCODING_ISO_8859_13
	},
	{
		"ISO-8859-14\0ISO8859-14\0ISO_8859_14\0ISO8859_14\0",
		ONIG_ENCODING_ISO_8859_14
	},
	{
		"ISO-8859-15\0ISO8859-15\0ISO_8859_15\0ISO8859_15\0",
		ONIG_ENCODING_ISO_8859_15
	},
	{
		"ISO-8859-16\0ISO8859-16\0ISO_8859_16\0ISO8859_16\0",
		ONIG_ENCODING_ISO_8859_16
	},
	{
		"ASCII\0US-ASCII\0US_ASCII\0ISO646\0",
		ONIG_ENCODING_ASCII
	},
	{ NULL, ONIG_ENCODING_UNDEF }

};

Expected result:
----------------
program being compile without compile error.

Actual result:
--------------
29 error(s),error C2099: initializer is not a constant, reported by vc6.0

Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2008-07-24 17:07 UTC] moriyoshi@php.net
Use the new win32 build system instead of VC project files. See 
README.WIN32-BUILD-SYSTEM enclosed in the source distribution for 
detail.

 [2008-07-26 09:05 UTC] geerdeli at yahoo dot com dot cn
hello, moriyoshi

I had already tried to rebuild the release under new win32 build system according to the README.WIN32-BUILD-SYSTEM file.

And looks like there are much more problems than the vc project file.

And if the new win32 build system under vc6.0 SDK, then it should working ok using vc project file as well.

So this it possible for you to write down the compile option which will overcome the compiling error explicitly.

Regards

Deligeer
 [2008-07-26 21:41 UTC] jani@php.net
Compiles fine with the proper tools and following the instructions. If you're not able to do it, use the pre-compiled binaries.
 
PHP Copyright © 2001-2025 The PHP Group
All rights reserved.
Last updated: Wed Jul 30 01:00:02 2025 UTC