
* Fix GH-17658: COMPersistHelper::LoadFromStream() can segfault The actual fix is trivial, but to be able to test the behavior we have to introduce an own COM object, since existing persistable objects likely implement `IPersistInit`, not only `IPersist`. We also want to avoid further test dependencies on possibly unavailable objects, such as `Word.Application`. To this purposes, we add a small COM in-process server, which may be extended for other testing purposes. We keep it simple by implementing it in C++, but without using any more sophisticated frameworks like ATL. This component needs to be built explicitly (`nmake comtest.dll`), and also needs to be explicitly registered (`nmake register_comtest`). When no longer needed, it is possible to unregister the component (`nmake unregister_comtest`).
15 lines
595 B
JavaScript
15 lines
595 B
JavaScript
// vim:ft=javascript
|
|
|
|
ARG_ENABLE("com-dotnet", "COM and .Net support", "yes,shared");
|
|
|
|
if (PHP_COM_DOTNET == "yes") {
|
|
CHECK_LIB('oleaut32.lib', 'com_dotnet');
|
|
EXTENSION("com_dotnet", "com_com.c com_dotnet.c com_extension.c \
|
|
com_handlers.c com_iterator.c com_misc.c com_olechar.c \
|
|
com_typeinfo.c com_variant.c com_wrapper.c com_saproxy.c com_persist.c",
|
|
null, "/DZEND_ENABLE_STATIC_TSRMLS_CACHE=1");
|
|
AC_DEFINE('HAVE_COM_DOTNET', 1, "Define to 1 if the PHP extension 'com_dotnet' is available.");
|
|
CHECK_HEADER_ADD_INCLUDE('mscoree.h', 'CFLAGS_COM_DOTNET');
|
|
ADD_MAKEFILE_FRAGMENT();
|
|
}
|