summaryrefslogtreecommitdiff
path: root/ext/com_dotnet
diff options
context:
space:
mode:
authorChristoph M. Becker <cmbecker69@gmx.de>2020-02-07 18:04:52 +0100
committerChristoph M. Becker <cmbecker69@gmx.de>2020-02-07 18:05:10 +0100
commit7f86f9972e8ed79e8157d38e1f782d7dec2c7472 (patch)
tree769cf3190f394370cd00fe6cf38c6290cdd81481 /ext/com_dotnet
parentcd5591a28d738b1b00c96c0e6cae91b490dba56d (diff)
parentb9738f5802d15ba5d593ae09a6e63e49f9d7880f (diff)
downloadphp-git-7f86f9972e8ed79e8157d38e1f782d7dec2c7472.tar.gz
Merge branch 'PHP-7.3' into PHP-7.4
* PHP-7.3: Fix #79242: COM error constants don't match com_exception codes
Diffstat (limited to 'ext/com_dotnet')
-rw-r--r--ext/com_dotnet/com_extension.c6
-rw-r--r--ext/com_dotnet/tests/bug79242.phpt22
2 files changed, 27 insertions, 1 deletions
diff --git a/ext/com_dotnet/com_extension.c b/ext/com_dotnet/com_extension.c
index 7ff0fd0ebd..c77d089188 100644
--- a/ext/com_dotnet/com_extension.c
+++ b/ext/com_dotnet/com_extension.c
@@ -341,11 +341,15 @@ PHP_MINIT_FUNCTION(com_dotnet)
#define COM_CONST(x) REGISTER_LONG_CONSTANT(#x, x, CONST_CS|CONST_PERSISTENT)
-#define COM_ERR_CONST(x) { \
+#if SIZEOF_ZEND_LONG == 8
+# define COM_ERR_CONST(x) { \
zend_long __tmp; \
ULongToIntPtr(x, &__tmp); \
REGISTER_LONG_CONSTANT(#x, __tmp, CONST_CS|CONST_PERSISTENT); \
}
+#else
+# define COM_ERR_CONST COM_CONST
+#endif
COM_CONST(CLSCTX_INPROC_SERVER);
COM_CONST(CLSCTX_INPROC_HANDLER);
diff --git a/ext/com_dotnet/tests/bug79242.phpt b/ext/com_dotnet/tests/bug79242.phpt
new file mode 100644
index 0000000000..46c5d8af3b
--- /dev/null
+++ b/ext/com_dotnet/tests/bug79242.phpt
@@ -0,0 +1,22 @@
+--TEST--
+Bug #79242 (COM error constants don't match com_exception codes)
+--SKIPIF--
+<?php
+if (!extension_loaded('com_dotnet')) die('skip com_dotnet extension not available');
+if (PHP_INT_SIZE != 4) die("skip this test is for 32bit platforms only");
+?>
+--FILE--
+<?php
+var_dump(
+ DISP_E_DIVBYZERO,
+ DISP_E_OVERFLOW,
+ DISP_E_BADINDEX,
+ MK_E_UNAVAILABLE
+);
+?>
+--EXPECT--
+int(-2147352558)
+int(-2147352566)
+int(-2147352565)
+int(-2147221021)
+